java并发编程(七)-调用yield() 、sleep()、wait()、notify()等方法对锁有何影响?

yield:让出时间片,不会释放锁

sleep:线程进入睡眠状态,不会释放锁

wait:调动方法之前,必须要持有锁。调用了wait()方法以后,锁就会被释放,进入锁的等待队列,方法返回后重新拿到锁

notify:调动方法之前,必须要持有锁,调用notify()方法本身不会释放锁的。而是通知等待队列中的某一个线程,同步代码块执行完毕后才会释放锁

notifyAll:同notify,有一点不同在于,notifyAll会发出n个信号(n=等待线程数),而notify只会发出一个信号,通常情况下,尽量选择notifyAll
 

猜你喜欢

转载自blog.csdn.net/a1173537204/article/details/89211639
今日推荐