public class Main {
public static void main(String[] args) {
for (int i = 0; i < 3; i++) {
new Thread(new Printer(i), String.valueOf((char) (i + 'A'))).start();
}
}
static class Printer implements Runnable {
private int id;
static int count;
public Printer(int id) {
this.id = id;
}
@Override
public void run() {
for (int i = 0; i < 10; i++) {
synchronized (Printer.class) {
while (count % 3 != id) {
try {
Printer.class.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
System.out.println(Thread.currentThread().getName());
Printer.count++;
Printer.class.notifyAll();
}
}
}
}
}