Java中多个线程等待获取同步锁,那没有被唤醒的线程执行完后释放掉锁后又会把锁给给谁呢?

Java中多个线程等待获取同步锁,我们都知道notify方法只能唤醒一个线程,那没有被唤醒的其他线程怎么办,怎么处理呢?被唤醒的线程执行完后释放掉锁后又会把锁给谁呢?... Java中多个线程等待获取同步锁,我们都知道notify方法只能唤醒一个线程,那没有被唤醒的其他线程怎么办,怎么处理呢?被唤醒的线程执行完后释放掉锁后又会把锁给谁呢? 展开
 我来答
小童鞋_成er
2014-05-14 · 知道合伙人数码行家
小童鞋_成er
知道合伙人数码行家
采纳数:4650 获赞数:22879
主要从事J2EE工作,热爱Java,用心讨论技术,共同进步。

向TA提问 私信TA
展开全部
您好,提问者:
1、如果一个线程执行中途遇到wait()了,就会休眠在线程池中。
2、如果一个线程执行完毕了,就会消失掉。
3、如果一个线程没有被执行完,那么这个线程有可能会被挂掉,或者一直存放到线程池中等待notify()唤醒,再者就是线程挂掉,Gc线程检测无用回收掉。
追问
有三个线程T1,T2,T3都在等待被唤醒,在另一个线程Tx的同步代码中调用了notify,一个被唤醒了,还有两个没有被唤醒。假设T1执行完了,T1释放了对象的锁,但是这个锁没有给另外两个线程,他们还在等。当Tx线程完全执行完后,这个锁会自动给T2、T3,我郁闷就是这个地方,就好像Tx把锁给了T1,T1又把锁给了Tx,T2、T3依然在等待,当Tx执行完,锁就给了T2、T3。不知道怎么解释
追答
应该会等待,没有被唤醒的话就一直是等待状态,直到程序停止,线程丢失。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式