交替打印ABC
package test11;
public class PrintABC {
private static int state = 0;
private static final Object lock = new Object();
public static void main(String[] args) {
Thread t1 = new Thread(new Runnable() {
@Override
public void run() {
try{
for (int i=0;i<100;i++){
synchronized (lock){
while (state%3 !=0){
lock.wait();
}
System.out.println("A");
state++;
lock.notifyAll();
}
}
}catch(InterruptedException e){
e.printStackTrace();
}
}
});
Thread t2 = new Thread(new Runnable() {
@Override
public void run() {
try{
for (int i=0;i<100;i++){
synchronized (lock){
while (state%3 !=1){
lock.wait();
}
System.out.println("B");
state++;
lock.notifyAll();
}
}
}catch(InterruptedException e){
e.printStackTrace();
}
}
});
Thread t3 = new Thread(new Runnable() {
@Override
public void run() {
try{
for (int i=0;i<100;i++){
synchronized (lock){
while (state%3 !=2){
lock.wait();
}
System.out.println("C");
state++;
lock.notifyAll();
}
}
}catch(InterruptedException e){
e.printStackTrace();
}
}
});
t1.start();
t2.start();
t3.start();
}
}
浙公网安备 33010602011771号