У меня есть этот цикл, который устанавливает задание для каждого потока, и мой вопрос в том, как я могу в этом же цикле запустить поток и избежать другого цикла

 List<Thread> works= new ArrayList<Thread>();
        for (final action a : actions) {
            threads.add(new Thread(() -> {
                jobMethod(a);
            }));
        }

Я люблю избегать:

for (Thread t : threads) {
    t.start();
}
-1
user63898 8 Июн 2021 в 17:51

2 ответа

Лучший ответ

Только что:

List<Thread> works= new ArrayList<Thread>();
for (final action a : actions) {
  // local var
  Thread tTmp = new Thread(() -> {
    jobMethod(a);
  });
  threads.add(tTmp);
  // and shoot!
  tTmp.start();
}

??

;-)

2
xerx593 8 Июн 2021 в 14:58

Объявить переменную? Кажется довольно тривиальным:

Thread t = new Thread(() -> jobMethod(a));
threads.add(t);
t.start();
3
rzwitserloot 8 Июн 2021 в 14:57