java synchronized块_java – 无限循环内的synchronized块

我有两个线程,比如T1和T2,它们同时对同一个对象obj:

class T1 extends Thread {

public void run() {

while(true) {

synchronized(obj) {

while(condition) {

...do something...

obj.wait();

}

...do something else...

obj.notify();

}

}

}

}

class T2 extends Thread {

public void run() {

while(true) {

synchronized(obj) {

while(!condition) {

...do something...

obj.wait();

}

...do something else...

obj.notify();

}

}

}

}

所以,假设T1首先获得锁定,进入while(条件)循环并暂停自己.另一方面,T2现在可以自由获取lock:!条件不满足因此它不会进入内部while循环,它会执行其他操作然后调用obj.notify().

我期待的是:T1唤醒,获取锁定等等,但我看到的大部分时间是T1无法获取锁定因此T2再次执行.

我问你这个行为是由while(true)循环引起的,还是其他什么.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值