代码如下:
package com.lanqiao.facetest;
public class ThreadMain {
public static void main(String[] args) {
Object obj = new Object();
int a = 0;
Thread1 thr = new Thread1(obj, a);
thr.start();
synchronized(obj){
//当a==0时,主线程等待
if(a==0){
try {
obj.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
for(int i=1;i<=5;i++){
for(int j=1;j<=3;j++){
System.out.println("主线程"+i);
}
a--;
//唤醒同步锁线程
obj.notify();
try {
//当前线程进入等待状态,释放锁
obj.wait();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
}
package com.lanqiao.facetest;
public class Thread1 extends Thread{
Object obj;
int a;
public Thread1(Object obj,int a){
this.obj=obj;
this.a=a;
}
public void run(){
synchronized (obj) {
//当a=1时,当前线程等待,释放锁
if(a==1){
try {
obj.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
for(int i = 1;i<=5;i++){
for(int j = 1;j<=3;j++){
System.out.println("子线程");
}
a++;
//唤醒同步锁线程
obj.notify();
try {
//当前线程等待,释放锁
obj.wait();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
}