public class MyThreadPrinter {
public static void main(String[] args) throws InterruptedException {
Object a = new Object();
Object b = new Object();
Object c = new Object();
ThreadPrinter A = new ThreadPrinter("A", c, a);
ThreadPrinter B = new ThreadPrinter("B", a, b);
ThreadPrinter C = new ThreadPrinter("C", b, c);
Thread thread1 = new Thread(A);
Thread thread2 = new Thread(B);
Thread thread3 = new Thread(C);
thread1.start();
Thread.sleep(100);
thread2.start();
Thread.sleep(100);
thread3.start();
Thread.sleep(100);
}
}
class ThreadPrinter implements Runnable {
// 输出内容
private String cxt;
// 前一个obj
private Object prev;
// 当前obj
private Object self;
public ThreadPrinter(String cxt, Object prev, Object self) {
this.cxt = cxt;
this.prev = prev;
this.self = self;
}
@Override
public void run() {
for (int i = 0; i < 10; i++) {
synchronized (prev) {
synchronized (self) {
System.out.println(cxt);
self.notify();
try {
prev.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
/*int count = 10;
while (count > 0) {
synchronized (prev) {
synchronized (self) {
System.out.print(cxt);
count--;
self.notify();
}
try {
prev.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}*/
}
}
打印结果:
结果
其中有个线程执行完状态变成下图所示:
monitor
跟自己预想的不太一样,麻烦大神帮忙解释一下
|
-
|