Is there a possibility to set priority to tasks which are executed by Executors? I've found some statements in JCIP about it's possible but I cannot find any example and I cannot find anything related in docs.
From JCIP:
An execution policy specifies the "what, where, when, and how" of task execution, including:
- ...
- In what order should tasks be executed (FIFO, LIFO, priority order)?
- ...
UPD: I realized that I asked not exactly what I wanted to ask. What I really wanted is:
How to use/emulate setting threads priority (i.e. what was thread.setPriority()
) with executors framework?
Currently the only concrete implementations of the Executor interface are the ThreadPoolExecutor and the ScheduledThreadpoolExecutor
Instead of using the utility / factory class Executors, you should create an instance using a constructor.
You can pass a BlockingQueue to the constructors of the ThreadPoolExecutor.
One of the implementations of the BlockingQueue, the PriorityBlockingQueue lets you pass a Comparator to a constructor, that way enabling you to decide the order of execution.