1 问题
2 代码
public class WaitAndNotify1 {
public static void main(String[] args) {
Thread t1=new Thread(new Runnable(){
@Override
public void run(){
System.out.println("Thread-1");
try {
synchronized (this) {
wait();
System.out.println("Thread-1 after wait");
}
} catch (InterruptedException e) {
e.printStackTrace();
}
}
});
Thread t2=new Thread(new Runnable(){
@Override
public void run(){
try {
Thread.sleep(4000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("Thread-2");
synchronized (this) {
notify();
System.out.println("Thread-2 after notify");
}
}
});
t1.start();
t2.start();
}
}
3 解答
4 后记
当调用wait方法时出现异常时(IllegalMonitorStateException),这时请注意查看官方api说明文档,而不是立马baidu或者google.应该仔细理解每句话的含义加以实践证明.
5 修改之后的代码
图中1,2,3,4处应该为同一个对象,即同一把锁.