创建一个Num类;
public class Num {
int i=0;
boolean falg=false;
}
创建一个TestThread类:
需要注意,在A和B需要使用有参构造,使用同一个num,使得线程同步;
在wait()和notify()时,需要在前面加上num;不然会报程序运行异常。
public class TestThread {
public static void main(String[] args) {
Num num=new Num();
Thread t1=new Thread(new A(num));
Thread t2=new Thread(new B(num));
t1.start();
t2.start();
}
}
class B implements Runnable{
private Num num;
B(Num num){
this.num=num;
}
@Override
public void run() {
while(num.i<99){
synchronized(num){
if(!num.falg){
try {
num.wait();
} catch (InterruptedException e) {}
}
num.i++;
num.falg=false;
System.out.println(num.i);
num.notify();
}
}
}
}
class A implements Runnable{
private Num num;
public A(Num num) {
this.num=num;
}
@Override
public void run() {
while(num.i<99){
synchronized(num){
if(num.falg){
try {
num.wait();
} catch (InterruptedException e) {}
}
num.i++;
num.falg=true;
System.out.println(num.i);
num.notify();
}
}
}
}