sleep、wait、notify、notifyAll的区别


Sleep 和wait

1. sleep是Thread类的静态方法,wait是Object类中定义的方法
2. Thread.sleep不会导致锁行为的改变,如果当前线程是拥有锁的,那么Thread.sleep不会让线程释放锁,而wait 会释放当前线程锁
3. Thread.sleep需要设定休眠时间.Object.wait也可以设定wait时间,或者通过线程执行notify/notifyAll进行唤醒

 

notify和notifyAll

1. notify唤醒一个线程,如果有多线程在wait,可能是随机一个

2. notifyAll唤醒所有在等待的线程,

3. 使用中尽量使用notifyAll,因为notify容易导致线程死锁(nofity只唤醒一个,其他等待的线程没有唤醒)

 

 

参考: https://blog.csdn.net/dreamweaver_zhou/article/details/79876805

    https://www.jianshu.com/p/25e243850bd2?appinstall=0

      https://www.cnblogs.com/happy-coder/p/6587092.html


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM