Really? What if you get an InterruptedException before you return from getWorkQueue.take()?
Then I should be checking for the exception, not if it is != null.
Yes, a better alternative would be to move your getWorkParser variable declaration at 819 and everything below and outside of the catch (830-853) into the try block. Since I'm a stickler about these things, I would also make getWorkParser final and toss the unnecessary null assignments to get rid of another possible null dereference compiler warning.

If you were aggressively nulling the variable because it was in a loop because you were worried about holding a reference in the loop, that GC weirdness workaround hasn't been necessary for a very long time. Besides, you will be reducing scope now, which is cleaner than null assignment, and the GC is non-deterministic, anyway.