О переключении контекста (синхронизации с ожиданием / уведомлением) между потоками и повторной отправке задачи (Callable / Runnable) в службу Executor, что лучше для производительности? как я знаю, для переключения контекста нужно сохранять / перезагружать данные потока, но если я повторно отправляю задачу в службу Executor, JVM необходимо перераспределить стек для переданной задачи, поэтому я думаю, что он имеет такую же стоимость с контекстом переключения?
Я проектирую очередь задач для рабочих потоков, помещаю задачи в нее и поток мониторинга, чтобы принимать задачи в очереди, отправлять задачи в пул потоков (служба исполнителя). Но я думаю о том, когда работает поток монитора? Вариант 1. Использование потока «wait» для потока монитора, и рабочий поток уведомит поток монитора после того, как они поместят задачу в очередь. Вариант 2. Использование службы исполнителя планировщика для потока мониторинга для проверки очереди. -> Какой вариант лучше (по скорости, производительности) и с вариантом 2: как часто проверять очередь лучше?
большое спасибо за вашу помощь