I have a Worker class that implements Runnable and has a run() method which may raise exceptions in the event of a conflict, and return early. When it does, that thread needs to be put back into the queue to be run again.
From looking at this question, it seems I need to rewrite with Callable. Is that correct? There’s no way to do this with Runnable?
Well you can have the worker thread do it itself. If you have control of the executor.
Or as your answer suggests having the waiting thread of a Future re-queue.