Установите приоритет задачи или пула в Gpars

У меня есть несколько задач, которые следует выполнять с разными приоритетами. Например, задача A нужна как можно раньше, а задачи B и C могут быть рассчитаны чуть позже, но обязательно после задачи A. При этом приоритет задач B или C в дальнейшем может измениться.

Как этого можно добиться с помощью GPars?

Реальный бизнес-кейс заключается в том, что мне нужно предварительно рассчитать некоторые данные. Например, у меня 3 вкладки, расчет данных по каждой вкладке занимает 30 секунд. Итак, я хотел бы сначала рассчитать данные для первой вкладки и начать вычислять данные для второй и третьей вкладок. Неизвестно, какая вкладка будет выбрана следующей, поэтому я должен иметь возможность изменить приоритет второй и третьей задач.


person Kipriz    schedule 20.09.2013    source источник


Ответы (1)


Я бы посоветовал вам попробовать пулы с разными приоритетами потоков. Затем установка приоритета для задачи превращается в планирование ее в правильном пуле (или группе GPars).

person Vaclav Pech    schedule 23.09.2013
comment
Вацлав, был ли уже реализован такой пул? Я попытался найти что-то похожее на него и понял, что, возможно, мне придется писать такой пул самому. - person Kipriz; 23.09.2013
comment
Возможно, вам придется создать новый пул с настраиваемой фабрикой потоков, которая регулирует приоритет потоков. Например. def pool = Executors.newFixedThreadPool(10, new ThreadFactory() { ` @Override` ` Thread newThread(final Runnable runnable) {` ` final Thread t = new Thread()` ` t.setPriority(5)` ` return t;` ` }` }) - person Vaclav Pech; 23.09.2013