线程间的协作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的相同和不同,很精练。

  • Wait-Notify机制

    锁机制。有介绍说Synchroniezd的锁的机制。

    结束下面这篇博文,不看源码,也能串起整个Synchronized的流程。

    包括warit(),notify()这些操作。

  • JVM源码分析之Object.wait/notify实现

    太喜欢这个作者了,文章分析之详尽,太棒了。一下子解决了锁池、等待池、对象池这些虚头巴脑的东西。

    重点在这个ObjectMonitor,醍醐灌顶!只能说自己太没动力了,只要看了源码,多么的清晰明了,哪还会纠结这么久!

  • JAVA并发编程:干掉 Synchronized

    自己学习了上面的文章后,理解的Synchronized 整个流程。乱扯了一通,欢迎各位看官指正。

  • 自己总结:

    sleep()和wait()也算是面试常问的问题了。它俩也相爱相杀多年,了解了用途和原理后,其实很容易理解。

    会忘记主要也是用的少。做做笔记,多翻看才行。看再多,也得有自己的总结。能够用自己组织的语音描述出来要表达的东西,才是最好的。

    • 相同点
      • 都能使程序暂停
      • 都可以指定时间后自动醒来,※只是醒来后的动作不一样※
      • 都可以在synchronized内使用,※调用后产生的结果不一样※
      • 都可以通过interrupt()方法打断线程的暂停状态, 抛出InterruptedException
    • 不同点
      • 先说一点,其实两个是完全不同的两个东西。对比感觉就是硬比。硬撩的感觉,尬的不行。
      • 就好比开车一样,sleep是让速不让道,道我还占着,别人也过不来。wait是让速又让道,你们快你们走,我得等等。
      • 下面错了表格来描述不同点,表格描述的很到位。
      • 方法 所属类 方法类型 解除方法 场景 用途
        sleep Thread 静态方法 不释放锁 timeout,interrupt 无限制 线程内的控制
        wait Object 非静态方法 释放锁 timeout,notify,interrupt 同步语句块 线程间的通信

以上是关于线程间的协作wait,notify,sleep,yield,join的主要内容,如果未能解决你的问题,请参考以下文章

线程间协作:waitnotifynotifyAll

wait/notify实现线程间的通信

java中关于线程间协作所用关键字synchronized,wait,notify的用法

线程汇总

java中wait,notify,notifyAll,sleep方法的作用和区别

线程间协作:waitnotifynotifyAll