Java三个线程循环打印ABC。。。,是个笔试题,虽然简单,但说真的很多人对线程的同步问题掌握的不是很好,包括我自己,写完这个demo,准备好好学一下线程的同步问题。
package str;
public class binary {
public static void main(String[] args) {
// TODO Auto-generated method stub
new Thread(new runnable("A", 0)).start();
new Thread(new runnable("B", 1)).start();
new Thread(new runnable("C", 2)).start();
}
}
class runnable implements Runnable {
String name;
int id;
int count = 3;
private static int num = 1;
private static final Object lock = new Object();
public runnable(String name, int id) {
this.name = name;
this.id = id;
}
public void run() {
while (true) {
synchronized (lock) {
if (num % count == id) {
System.out.println(name);
num++;
lock.notifyAll();
} else {
try {
lock.wait();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
}
}