现在锁用ReadWriteLock、Condition这类封装好的比较多了,但是还是有很多代码是用wait、notify实现的。 我们还是要明白基本的使用,wait让出监控器监视器进入等待队列; notify只是唤醒(不进行判断)等待监控器的线程,所以一般判断进入等待的代码应该是一个while循环,否则可能没有起到判断的作用。 示例代码 privatestaticintcondition1; publicstaticvoidmain(String〔〕args)throwsException{ ObjectlockObjnewObject(); newThread((){ synchronized(lockObj){ if(condition1){ try{ lockObj。wait(); }catch(InterruptedExceptione){ thrownewRuntimeException(e); } } System。out。println(condition1condition:condition); } })。start(); Thread。sleep(3000L); synchronized(lockObj){ condition0; lockObj。notify(); } Thread。sleep(3000L); newThread((){ synchronized(lockObj){ while(condition9){ try{ lockObj。wait(); }catch(InterruptedExceptione){ thrownewRuntimeException(e); } } System。out。println(condition9condition:condition); } })。start(); synchronized(lockObj){ condition8; lockObj。notifyAll(); } System。out。println(condition8notify); Thread。sleep(3000L); synchronized(lockObj){ condition10; System。out。println(condition10notify); lockObj。notifyAll(); } } 输出 condition1condition:0 condition8notify condition10notify condition9condition:10