У меня есть класс JobManagement, который имеет задание job [] и очередь ArrayBlockingQueue размером 2.
Что я пытаюсь сделать: я хочу создать, например, 20 заданий. Класс Job расширяет Thread и переопределяет метод выполнения:
@Override
public void run() {
setStatus(EnumStatus.inProgress);
System.out.println(this.toString());
System.out.println("Working...");
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
throw new AuftragException();
}
setStatus(EnumStatus.done);
Я хочу заполнить свою очередь двумя заданиями, вызвать для них метод выполнения и повторять, пока все задания из задания job [] не будут выполнены. .
В настоящее время я думаю о методе startWork () в классе JobManagement, который выполняет следующие функции:
for (Job j : jobs) {
while (!queue.offer(j)) {
queue.poll().start();
}
Я не ограничиваю Java, чтобы использовать здесь только 2 потока, я i?
Изменить: использование Executor.Service с фиксированным пулом потоков решило мою проблему.