Ищет решение для оптимизации обработки рабочих нагрузок, поступающих либо из фона, либо из источников задач API. Код задачи - это только один класс Callable. Я предполагаю, что наличие двух отдельных пулов потоков для разных источников задач менее изящное решение. Поэтому мне нужны следующие свойства, которые должны быть у ExecutorService:Масштабируемый приоритет ThreadPoolExecutor
- динамически динамически настраивать порядок выполнения задач на основе интерфейса Comparable.
java.util.concurrent.PriorityBlockingQueue
делает это уже. Я могу передать это как аргументjava.util.concurrent.ThreadPoolExecutor
, так что это уже обработано. - количества потоков предпочтительно scale up and down dynamically (с)
Пока Java сообщество динамично, может быть, кто-то сделали уже решить эту проблему в любую доступную библиотеку? Или я должен переопределить методы PriorityBlockingQueue?
Вы можете получить ограниченную форму автомасштабирования, используя [этот шаблон] (http://stackoverflow.com/a/15032613/552759). Кроме того, вы заботитесь о голодании задач с более низким приоритетом, что делает вещи «более сложными». – jtahlborn
@jtahlborn благодарит, любые комментарии приветствуются –
@nefo_x Как выглядит ваша работа (Callables)? Являются ли они в/в тяжелыми или просто связаны? Если они привязаны к процессору, вы все равно можете масштабировать до количества ядер. –