public?static?Object?obj?=?new?Object();
public?static?void?main(String[]?args){
new?A().start();
new?B().start();
}
}
class?A?extends?Thread{
public?void?run(){
try{
synchronized(Test.obj){
for(int?i?=?1?;?i?<?31;i?+=?6){
Test.obj.notify();
System.out.println("線程A:"+?i);
System.out.println("線程A:"+?(i+1));
System.out.println("線程A:"+?(i+2));
Test.obj.wait();
}
}
}catch(Exception?e){
e.printStackTrace();
}
}
}
class?B?extends?Thread{
public?void?run(){
try{
synchronized(Test.obj){
for(int?i?=?4?;?i?<?31;i?+=?6){
Test.obj.notify();
System.out.println("線程B:"+?i);
System.out.println("線程B:"+?(i+1));
System.out.println("線程B:"+?(i+2));
Test.obj.wait();
}
}
}catch(Exception?e){
e.printStackTrace();
}
}
}