如果我有一个准备好要使用的10个线程的数组,并且如果我有类似的东西
for (int i=0;i< MyThreadArray.length: i++){
MyThreadArray[i].start()
MyThreadArray.join()
}
如果线程#6的sleep()为5分钟,如何在线程6结束之前运行线程#7?我必须等待#6的结束,或者有一些指令可以运行“下一个线程”?
最佳答案
使用两个循环。在第一个中,您应该启动所有线程:
for (int i=0;i< MyThreadArray.length: i++){
MyThreadArray[i].start()
}
这将启动所有这些。之后,您要等待它们完成:
for (int i=0;i< MyThreadArray.length: i++){
MyThreadArray[i].join()
// notice ^^^ you had a typo there
}
这将等待每个线程完成后再继续。
另外,请注意以下特殊逻辑:
for (int i=0;i< MyThreadArray.length: i++){
MyThreadArray[i].start()
MyThreadArray[i].join()
}
这是的较差版本,而不是使用并行性的,因为它会依次等待每个单个线程 ,另外还会增加启动
Thread
的开销。关于java - Java线程join(),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53868372/