三个线程交替打印A、B、C的问题

    xiaoxiao2021-03-25  62

    public class ThreadTest_syn implements Runnable { private String name; private Object prev; private Object self; private ThreadTest_syn(String name, Object prev, Object self) { this.name = name; this.prev = prev; this.self = self; } @Override public void run() { int count = 10; while (count > 0) { //先拥有前一个锁对象 synchronized (prev) { //在拥有自身锁对象 synchronized (self) { System.out.print(name); count--; //释放自身锁 self.notify(); } try { //释放前一个锁对象 prev.wait(); } catch (InterruptedException e) { e.printStackTrace(); } } } } public static void main(String[] args) throws Exception { Object a = new Object(); Object b = new Object(); Object c = new Object(); ThreadTest_syn pa = new ThreadTest_syn("A", c, a); ThreadTest_syn pb = new ThreadTest_syn("B", a, b); ThreadTest_syn pc = new ThreadTest_syn("C", b, c); new Thread(pa).start(); Thread.sleep(100); //确保按顺序A、B、C执行 new Thread(pb).start(); Thread.sleep(100); new Thread(pc).start(); Thread.sleep(100); }
    转载请注明原文地址: https://ju.6miu.com/read-37105.html

    最新回复(0)