The processing of each thread should re-start at the beginning every 5 or 10 minutes.  Some of our threads get so busy that they don't reach the end for 5 hours (sometimes much more).  The result is that records skipped because they are locked or embraced by active transactions get stranded.