Как запустить более одного задания одновременно в RCP? - PullRequest
1 голос
/ 01 сентября 2011

Я хочу знать, как выполнять более одной работы в Eclipse одновременно. Я хочу одновременно выполнять несколько заданий в RCP.

Ответы [ 4 ]

2 голосов
/ 01 сентября 2011

A Job более или менее включает Thread, и все запущенные (запланированные) экземпляры заданий выполняются параллельно.

Предложение для дальнейшего чтения:

0 голосов
/ 01 декабря 2014

Спустя несколько лет у вас возникла противоположная проблема - ограничить количество одновременных заданий.
Вот почему Eclipse 4.5M4 теперь будет включать (4 квартал 2014 г.) способ поддержки групп заданий с регулированием.

См. ошибка 432049 :

Eclipse предоставляет простой API заданий для параллельного и асинхронного выполнения различных задач. Одним из ограничений заданий Eclipse является то, что нет простого способа ограничить количество рабочих потоков, используемых для выполнения заданий.
Это может привести к взрыву пула потоков, когда многие задания запланированы в быстрой последовательности. В связи с этим легко использовать задания для параллельного выполнения различных несвязанных задач, но трудно реализовать тысячи взаимодействующих заданий для выполнения одной большой задачи.

Eclipse в настоящее время поддерживает концепцию Job Families, которая обеспечивает один способ группировки с поддержкой операций присоединения, отмены, спящего режима и пробуждения для всей семьи.

Чтобы решить все эти проблемы, мы хотели бы предложить простой способ сгруппировать набор заданий Eclipse, которые отвечают за части одной и той же большой задачи .
API будет поддерживать регулирование, объединение, отмену, объединение отчетов о ходе выполнения и ошибках для всех заданий в группе, а функциональность группировки заданий может использоваться для перезаписи критичных для производительности алгоритмов для использования параллельного выполнения взаимодействующих заданий.

Вы можете увидеть реализацию в this commit 26471fa

0 голосов
/ 01 сентября 2011

См. Eclipse RCP: одновременно выполняется только одно задание?

Задания могут по желанию завершать свое выполнение асинхронно (в другом потоке), возвращая статус результата ASYNC_FINISH. Задания, которые завершаются асинхронно, должны указывать поток выполнения, вызывая setThread, и должны указывать, когда они завершаются, вызывая метод done.

0 голосов
/ 01 сентября 2011

Используйте Threading для одновременного запуска более одного задания.

Thread th = new Thread() {
     public void run() {
         //Here is a thread that you can use wherever you want in your code
     }
};
th.start();
...