如果我有一组 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线程连接(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53868372/