package com.company;
import java.util.*;
public class Main {
static class Test{
int n=0;
boolean flag = false;
public synchronized void firstA(){
while (flag){
try {
this.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
flag = true;
n = n+1;
System.out.println(Thread.currentThread()+"---"+n);
this.notify();
}
public synchronized void firstB(){
while (!flag){
try {
this.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
flag = false;
n = n+2;
System.out.println(Thread.currentThread()+"---"+n);
this.notify();
}
}
public static void main(String[] args) {
Test test = new Test();
new Thread(new Runnable() {
@Override
public void run() {
for(int i=0;i<10;i++)
test.firstA();
}
}).start();
new Thread(new Runnable() {
@Override
public void run() {
for(int i=0;i<10;i++)
test.firstB();
}
}).start();
}
}
打印结果如下:
Thread[Thread-0,5,main]---1
Thread[Thread-1,5,main]---3
Thread[Thread-0,5,main]---4
Thread[Thread-1,5,main]---6
Thread[Thread-0,5,main]---7
Thread[Thread-1,5,main]---9
Thread[Thread-0,5,main]---10
Thread[Thread-1,5,main]---12
Thread[Thread-0,5,main]---13
Thread[Thread-1,5,main]---15
Thread[Thread-0,5,main]---16
Thread[Thread-1,5,main]---18
Thread[Thread-0,5,main]---19
Thread[Thread-1,5,main]---21
Thread[Thread-0,5,main]---22
Thread[Thread-1,5,main]---24
Thread[Thread-0,5,main]---25
Thread[Thread-1,5,main]---27
Thread[Thread-0,5,main]---28
Thread[Thread-1,5,main]---30