方法join的使用

作者: Ferrari1001 | 来源:发表于2018-01-13 16:12 被阅读6次

背景:在很多情况下,主线程创建并启动子线程,如果子线程中要进行大量的耗时运算,主线程往往将早于子线程结束之前结束。这时,如果主线程想要等待子线程执行完成之后再结束,比如子线程处理一个数据,主线程要取得这个数据中的值,就要用到join()方法了。概括地讲:方法join()的作用是等待线程对象销毁。

代码示例:

实验一(主线程中没有使用join()方法):

自定义线程类 主函数中没有使用join()方法

结果:

运行结果(主线程未在子线程处理结束后再执行)

实验二(主线程中使用了join()方法):

主函数中使用了join()方法

结果:

运行结果(主线程在子线程处理结束后再执行)

总结:

          1.方法join()的作用是使所属的线程对象x正常执行run()方法中的任务,而使当前线程z进行无限期的阻塞,等待线程x销毁后再继续执行线程z后面的代码。

          2.方法join()具有使线程排队运行的作用,有些类似同步的运行效果。join与synchronized的区别是:join在内部使用wait()方法进行等待,而synchronized关键字使用的是“对象监视器”原理作为同步。(感兴趣的童鞋可以查看两方法的源代码验证哦)

相关文章

网友评论

    本文标题:方法join的使用

    本文链接:https://www.haomeiwen.com/subject/mevcoxtx.html