object.wait()和object.notify()和object.notifyall()
object.wait()方法:让拥有object对象的锁的线程进入等待状态,并释放对象锁。
object.wait()和object.notify()和object.notifyall()必须写在synchronized方法内部或者synchronized块内部,因为:
这几个方法要求当前正在运行object.wait()方法的线程拥有object的对象锁。。。
即使你确实知道当前上下文线程确实拥有了对象锁,也不能将object.wait()这样的语句写在当前上下文中。如:
package com.wangf.test;class AAA {public synchronized void aaa() throws InterruptedException {System.out.println(Thread.currentThread().getId());this.wait();}}public class MyWait {public static void main(String[] args) throws InterruptedException {AAA aaa = new AAA();System.out.println(Thread.currentThread().getId());aaa.aaa();}}