private List<Thread> pupils = new ArrayList<>();
public (int groupNo, Position pos)
{
this.groupNo = groupNo;
this.position = pos;
for (int i = 1; i < 10; i++) {
pupils.add(new Thread(new Pupil(i, groupNo, pos)));
}
}
@Override
public void run()
{
pupils.forEach(t -> t.start());
// Here I would like to use Java 8 features instead of Iterator to loop through list
// of threads and start a thread at once. Only when one is complete start the next
// in order.
}
我有一个Threads
的列表,我想依次开始。一旦完成任务,下一个接管指挥棒,如果你喜欢并完成任务。如何按顺序迭代列表并使用Java lambda body启动线程,以便InterruptedException
调用join()
处理class="pull-left"
?
答案 0 :(得分:1)
在开始下一个线程之前等待每个线程完成是没有意义的。您也可以在一个线程中完成所有工作。
不要使用Thread
个对象(或Foobar extends Thread
个对象)来表示数据模型中的内容。这违反了单一责任原则。使用线程来工作,或使用线程等待异步事件。使用模型中的其他对象。