Java线程连接()

标签 java multithreading join wait

如果我有一组 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/

相关文章:

MySql 自连接优化查询

multithreading - 如何在Octave中执行下一个命令之前,等待(音频播放)命令完成?

android - android架构组件中executor的使用

multithreading - 在NHibernate中同时打开多个 session

连接表上大小写不工作的 MySQL 更新列

MySQL为每个分组的列值选择一个随机行

java - Visual Studio代码: Java code does not run at all

java - Object[] 是如何克隆的

Netbeans 中的 JavaFX 场景生成器 2.0 错误

java - 所有接口(interface)的父类(super class)