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