sleep、wait、notify、notifyAll的区别

时间:2023-03-10 03:33:41
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进行唤醒

sleep、wait、notify、notifyAll的区别

notify和notifyAll

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

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

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

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

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

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