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(); } } }*/ } }
打印结果:
其中有个线程执行完状态变成下图所示:
跟自己预想的不太一样,麻烦大神帮忙解释一下