柠檬学院
MrZive的gravatar头像
MrZive2019-01-11 20:18:16

关于java synchronized 锁的问题

class TT implements Runnable{
	@Override
	public void run() {
		Integer apple=new Integer(10);
		synchronized (apple) {//与while语句互换后就没事
			while(true){
				if(apple==0){
					try {
						apple.wait();
					} catch (InterruptedException e) {
						e.printStackTrace();
					}
				}
				apple--;
				System.out.println(apple);
			}
		}
	}
}

线程运行后会报java.lang.IllegalMonitorStateException,一直想不明白为什么会报错,debug后,发现apple.wait后,线程没暂停,继续循环到synchronized再次获取锁才报的错,如果synchronized与while语句互换后就没问题,这又是为什么呢???

所有回答列表(4)
丶右转的gravatar头像
丶右转 LV91月14日

顶顶顶顶顶顶顶顶顶

hqblyq的gravatar头像
hqblyq LV21月14日

顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶

13836800381的gravatar头像
13836800381 LV21月15日

挺好

hr4370913的gravatar头像
hr4370913 LV2前天

挺好的

顶部客服微信二维码底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友