class Out {
private int i = 1;
public void out1() throws InterruptedException {
synchronized (this) {//给线程加锁
if (i %2 == 1) {
this.wait();//当i余2等于一时,线程等待
}
System.out.println("1号线程");
i ++ ;
this.notify();//唤醒处于等待状态的线程直到遇到下一个wait()
}
}
public void out2() throws InterruptedException {
synchronized (this) {
if (i % 2 == 0) {
this.wait();
}
System.out.println("2号线程");
i ++ ;
this.notify();
}
}
}
class hello {
public static void main(String[] args) throws IOException, InterruptedException {
Out o = new Out();
new Thread() {
public void run() {
while (true) {
try {
o.out1();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}.start();
new Thread() {
public void run() {
while (true) {
try {
o.out2();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}.start();
}
}
运行结果: