I'm not so sure about this. Let's say the stage fails to process the document within the time limit. Then we throw a ProcessException, but don't stop the processThread. What is to say that the processThread will stop at all? Won't this eventually lead to thread starvation?