对象的notify方法的含义和对象锁释放的三种情况

Posted Fight With Me!!!

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了对象的notify方法的含义和对象锁释放的三种情况相关的知识,希望对你有一定的参考价值。

1,notify的含义    
(1)notify一次只随机通知一个线程进行唤醒
(2)在执行了notify方法之后,当前线程不会马上释放该对象锁,呈wait状态的线程也不能马上获得该对象锁,
要等到执行notify方法的线程将程序执行完 ,也就是退出sychronized代码块后,当前线程才会释放锁,
而呈wait状态所在的线程才可以获取该对象锁。
2,对象锁释放的三种情况
 
序号 场景
1 执行完同步代码块就会释放对象的锁
2 在执行同步代码块的过程中,遇到异常而导致线程终止,锁也会被释放
3 在执行同步代码块的过程中,执行了锁所属对象的wait方法,这个线程会释放对象锁,而此线程对象会进入线程等待池中,等待被唤醒
 
 

以上是关于对象的notify方法的含义和对象锁释放的三种情况的主要内容,如果未能解决你的问题,请参考以下文章

并发编程学习

[多线程]wait和notify

java锁之wait,notify(wait会释放锁,notify仅仅只是通知,不释放锁)

java中sleep和wait的区别

java同步中,为啥要wait,又notify谁?

为什么 wait(), notify()和 notifyAll ()必须在同步方法或 者同步块中被调用?