天天看点

Exception in thread “A“ java.lang.IllegalMonitorStateException

一、问题描述:

Exception in thread “A” java.lang.IllegalMonitorStateException

at java.lang.Object.notify(Native Method)

at com.atguigu.AirCondition.increment(Consumer.java:24)

at com.atguigu.Consumer.lambda$main$0(Consumer.java:56)

at java.lang.Thread.run(Thread.java:748)

lock.lock();
            while (count!=0){
                condition.await();
//                lock.wait();
//                this.wait();
//ReentrantLock使用了wait(Object)
           

二:问题分析

synchronized和ReentrantLock本质是不一样的,两个同时使用必然出问题;

package java.lang;
vs
package java.util.concurrent.locks;
           

三、问题解决:

使用

private Lock lock = new ReentrantLock();
private Condition condition = lock.newCondition();
condition.await();
           
不能混用!!!