Я реализую механизм объединения потоков, в котором я хотел бы выполнять задачи с разными приоритетами. Я хотел бы иметь хороший механизм, благодаря которому я могу отправить высокоприоритетную задачу службе и планировать ее перед другими задачами. Приоритет задачи - это внутреннее свойство самой задачи (я говорю, что эта задача как Callable
или Runnable
для меня не важна).
Теперь, внешне, похоже, что я мог использовать PriorityBlockingQueue
в качестве очереди задач в моей ThreadPoolExecutor
, но эта очередь содержит объекты Runnable
, которые могут быть или не быть заданиями Runnable
, которые я отправил к нему. Более того, если я отправил задачи Callable
, это не ясно, как это когда-либо будет отображаться.
Есть ли способ сделать это? Я бы предпочел не отказываться от этого, потому что я гораздо чаще ошибаюсь.
(В стороне, да, я знаю о возможности голодания для низкоприоритетных работ в чем-то подобном. Дополнительные баллы (?!) для решений, которые имеют разумную гарантию справедливости)