public class ProdectData {
Object obj;
public ProdectData(){
obj=new Object();
}
private void readString(String content){
synchronized (obj){ String name = Thread.currentThread().getName();
System.out.println(name +"进入了同步块");
try{
System.out.println(name +"释放了锁,进入了等待状态");
obj.wait();
System.out.println(name+"被叫醒,有拥有了锁");
Thread.sleep(1000*2);

}catch(InterruptedException e){
e.setStackTrace(null);
}
System.out.println(name+ "输出字符串");
for(int i=0;i<content.length();i++){
System.out.println(content.charAt(i));
System.out.println(name+"输出字符串后,退出同步块");
}
}
}
private void wakeup(){
synchronized (obj){
String name =Thread.currentThread().getName();
System.out.println(name+"等待一秒钟后被叫醒所有线程");
try{
obj.wait();
}catch(InterruptedException e){}
// obj.notifyAll();
}
}

private void  creatandstartthread(){
Runnable r=new Runnable(){
public void run(){
readString("one world ,one dream");
}
};
Runnable rr=new Runnable(){
public void run(){
wakeup();
}
};
Thread t1=new Thread(r,"thread1");
Thread t2=new Thread(r,"thread2");
t1.start();
t2.start();
Thread t3=new Thread(rr,"thread3");
t3.start();
}
public static void main(String[] args)throws InterruptedException{
ProdectData h=new ProdectData();
h.creatandstartthread();
Thread.sleep(1000*5);
h.obj.notifyAll();
System.out.println("---------------");
}
}
在程序中为什么会出现
Exception in thread "main" java.lang.IllegalMonitorStateException
at java.lang.Object.notifyAll(Native Method)
at ProdectData.main(ProdectData.java:60)
异常?????????????????????