Флаг остановки в многопоточном обработчике
Используйие ThreadPoolExecutor У него есть метод shutdown() который после вызова закончит «таски», которые вы ему дали на выполнение, но новые принимать больше не будет.

Таски могут быть к примеру или Callable<T> если хотите возвращать значение или Runnable
Несколько раз прочитал вопрос, но так и не понял — у вас 1 инстанс Worker на много потоков? Если на нем синхронизироваться, то вы же получите обычное последовательное исполнение, зачем тогда вообще многопоточность. Поясните пожалуйста.