【发布时间】:2019-05-20 22:58:25
【问题描述】:
如果我有一个包含 10 个线程的数组准备好“使用”并且如果我有类似的东西
for (int i=0;i< MyThreadArray.length: i++){
MyThreadArray[i].start()
MyThreadArray.join()
}
如果线程 #6 的 sleep() 为 5 分钟,我如何在 #6 结束之前运行线程 #7?我必须等待#6 结束或者有一些指令来运行“下一个线程”?
【问题讨论】:
-
你为什么打电话给
join()?鉴于您的问题描述,您不想等待线程完成,但这正是调用join()所做的。因此,如果您不想等待,请不要致电join()。做你当前正在做的事情并不比只在当前线程上做工作更好。 -
t.join()等待线程t在继续循环之前终止。这就是它在其他线程之前完成的原因。 -
对于我的应用程序,我必须等待 n 线程结束,然后才能启动 (n+1) 线程。但是如果我有一个 sleep(),我可以运行 (n+1)-thread.... 我正在尝试这样做
-
"你必须等待
n线程结束才能启动n + 1线程"那为什么还要使用线程呢? -
我试图更好地解释......我试图在一个系统无多线程(System-A)和一个系统多线程(System-B)之间执行一种集成。在我的应用程序中,我在 System-A 的一个特定事件之后运行一个线程,在继续之前,我必须等待 System-B 的线程执行结束。我可以有一个“例外”:如果运行的线程有 wait() 或 sleep() 我可以运行 System-B 的下一个线程
标签: java multithreading join wait