Я пытаюсь создать реализацию ExecutorService
, назовите его SequentialPooledExecutor
со следующими свойствами.
-
Все экземпляры
SequentialPooledExecutor
совместно используют один пул потоков -
Вызов одного и того же экземпляра
SequentialPooledExecutor
выполняется последовательно.
Другими словами, экземпляр ждет завершения выполняющейся задачи перед тем, как начать обработку следующей задачи в своей очереди.
В настоящее время я сам внедряю SequentialPooledExecutor
, но мне интересно, изобретаю ли я колесо. Я рассмотрел различные реализации ExecutorService
, например те, которые предоставляются классом Executors
, но я не нашел тот, который соответствует моим требованиям.
Знаете ли вы, есть ли существующие реализации, которых я пропускаю, или я должен продолжить реализацию интерфейса?
EDIT:
Я думаю, что мое требование не очень ясное, посмотрим, могу ли я объяснить это другими словами.
Предположим, что у меня есть серия сеансов, скажем 1000 из них (то, что я раньше вызывал экземпляр исполнителя). Я могу отправлять задания на сеанс, и я хочу, чтобы все задачи, которые были отправлены на один и тот же сеанс, выполнялись последовательно. Однако задачи, относящиеся к разным сеансам, не должны иметь зависимости друг от друга.
Я хочу определить ExecutorService
, который выполняет эти задачи, но использует ограниченное число потоков, скажем 200, но гарантирует, что задача не будет запущена до того, как предыдущая в том же сеансе будет завершена.
Я не знаю, есть ли что-то существующее, которое уже делает это, или если я должен реализовать такой ExecutorService
сам.