线程间的协作wait,notify,sleep,yield,join
Posted elegent
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了线程间的协作wait,notify,sleep,yield,join相关的知识,希望对你有一定的参考价值。
-
Java 并发编程:线程间的协作(wait/notify/sleep/yield/join)
博文开始复习了下线程状态,给出了线程状态间的转换图示。
以实例,源码,解释描述方式,阐述了wait, notify ,sleep等的功能 点。非常详细。赞一个。
-
java sleep(),wait(),notify()函数区别
几句话描述了这几者之间的相同和不同点,作为面试题来回答,还是可以的。
-
wait、notify、sleep、interrupt对比分析
这篇文章里,给出了一个图表,对比了wait和sleep的相同和不同,很精练。
-
锁机制。有介绍说Synchroniezd的锁的机制。
结束下面这篇博文,不看源码,也能串起整个Synchronized的流程。
包括warit(),notify()这些操作。
-
太喜欢这个作者了,文章分析之详尽,太棒了。一下子解决了锁池、等待池、对象池这些虚头巴脑的东西。
重点在这个ObjectMonitor,醍醐灌顶!只能说自己太没动力了,只要看了源码,多么的清晰明了,哪还会纠结这么久!
-
自己学习了上面的文章后,理解的Synchronized 整个流程。乱扯了一通,欢迎各位看官指正。
-
自己总结:
sleep()和wait()也算是面试常问的问题了。它俩也相爱相杀多年,了解了用途和原理后,其实很容易理解。
会忘记主要也是用的少。做做笔记,多翻看才行。看再多,也得有自己的总结。能够用自己组织的语音描述出来要表达的东西,才是最好的。
- 相同点
- 都能使程序暂停
- 都可以指定时间后自动醒来,※只是醒来后的动作不一样※。
- 都可以在synchronized内使用,※调用后产生的结果不一样※
- 都可以通过interrupt()方法打断线程的暂停状态, 抛出InterruptedException
- 不同点
- 先说一点,其实两个是完全不同的两个东西。对比感觉就是硬比。硬撩的感觉,尬的不行。
- 就好比开车一样,sleep是让速不让道,道我还占着,别人也过不来。wait是让速又让道,你们快你们走,我得等等。
- 下面错了表格来描述不同点,表格描述的很到位。
-
方法 所属类 方法类型 锁 解除方法 场景 用途 sleep Thread 静态方法 不释放锁 timeout,interrupt 无限制 线程内的控制 wait Object 非静态方法 释放锁 timeout,notify,interrupt 同步语句块 线程间的通信
- 相同点
以上是关于线程间的协作wait,notify,sleep,yield,join的主要内容,如果未能解决你的问题,请参考以下文章
java中关于线程间协作所用关键字synchronized,wait,notify的用法