分享

JAVA 线程通信问题请教

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

monitor


跟自己预想的不太一样,麻烦大神帮忙解释一下

d33fb1afe9cf4ba3b3e75f105d58b71c.png

没找到任何评论,期待你打破沉寂

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条