CountDownLatch在线程交替打印中的使用及CountDownLatch浅析

    科技2026-01-02  10

    import java.util.concurrent.CountDownLatch; /** * @author :lizhen * @date :Created in 2020/10/8 18:41 * @description: * @modified By: * @version: $ */ public class JUCDoor { public static void main(String[] args) { final Object o = new Object(); char[] a = new char[26]; for (int i = 0; i < 26; i++) { a[i] = (char) (97 + i); } CountDownLatch countDownLatch = new CountDownLatch(1); new Thread(()->{ synchronized (o) { for (int i = 1; i <= 26; i++) { System.out.print(i); try { countDownLatch.countDown(); o.notify(); o.wait(); } catch (InterruptedException e) { e.printStackTrace(); } } } },"A").start(); new Thread(()->{ try { countDownLatch.await(); } catch (InterruptedException e) { e.printStackTrace(); } synchronized (o) { for (int i = 0; i < 26; i++) { System.out.print(a[i]); try { o.notify(); o.wait(); } catch (InterruptedException e) { e.printStackTrace(); } } } },"B").start(); } }

    await() 阻塞当前线程 ,当count == 0 继续向下执行 toNanos()指向了一个抽象方法错误 一路追溯到一个记录栈状态的类

    Processed: 0.019, SQL: 9