@线程A循环打印a
线程B循环打印b
线程C循环打印c
三个线程同事start
要求规律输出a,b,c,a,b,c,a
public class ABC {
static int flag = 0;
public static void main(String[] args) {
final Object obj = new Object();
Thread t1 = new Thread(new Runnable() {
@Override
public void run() {
try {
while(true) {
synchronized(obj) {
if(flag==0) {
System.out.println("AAA");
obj.notifyAll();
Thread.sleep(1000);
flag=1;
}
obj.wait();
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
});
Thread t2 = new Thread(new Runnable() {
public void run() {
try {
while (true) {
synchronized (obj) {
if(flag==1) {
System.out.println("BBB");
obj.notifyAll();
Thread.sleep(1000);
flag=2;
}
obj.wait();
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
});
Thread t3 = new Thread(new Runnable() {
public void run() {
try {
while (true) {
synchronized (obj) {
if(flag==2) {
System.out.println("CCC");
Thread.sleep(1000);
obj.notifyAll();
flag=0;
}
obj.wait();
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
});
t1.start();
t2.start();
t3.start();
}
}