我在谷歌上搜索了很多关于isAlive和join()的信息,但是没有得到正确的解释。假设我有线程-1和线程-2,我只需要在线程-1完成之后才启动Thread-2。
这两种方法都可以达到上述要求。
发布于 2013-12-27 10:33:08
.isAlive()只返回一个布尔值,该布尔值指示线程是否活动,线程的状态-它返回true或false,指示线程是否“完成”。
.join()使当前线程处于等待状态,直到调用.join()的线程完成。例如,如果在继续当前线程中的其余代码之前,需要在另一个线程中进行一些计算。
我假设这是您所指的来自Java的线程-class。这是一个理解多线程的好教程。它可能看起来很重,但是一旦你把你的注意力集中在线程上,你就会立刻成为一个更好的程序员。它非常有用。
发布于 2013-12-27 10:21:50
联接阻止当前正在运行的线程,并执行其他线程,当它完成时,将恢复被阻塞的线程。
我认为isAlive只是返回线程是否正在运行。
发布于 2013-12-27 11:54:08
“在哪种场景中使用哪种方法?”什么场景?
一般来说,使用这两种方法都是高效多线程设计的良好开端。
Join()似乎是专门为GUI应用程序等生成关闭死锁而设计的。
isAlive()似乎是专门为鼓励开发人员而设计的。实现CPU密集型和/或延迟填充的轮询循环。我认为它会产生假阳性。当线程返回true时线程就消失了。
我需要‘只在线程-1完成后才启动线程-2’,那么任何一个线程-2都是多余的(在这种情况下,只需在线程-1函数的末尾调用‘线程-2’的函数),或者只需在线程-1函数的末尾启动线程-2。根本不需要任何信号/轮询复杂性。
https://stackoverflow.com/questions/20798842
复制相似问题