JUC-工具类

2021-02-16  本文已影响0人  ythmilk

Semaphore

信号量或者说叫管理器,它其实不是对资源加锁,而是控制最多N个线程可以同时访问资源。类似停车场,如果停满了,只能等待。

CountDownLatch

完成线程的协作,等所有线程执行完之后再执行
用join可以实现同样的功能,但是join在线程池的情况下不能使用

latch.countDown();计数器减一
latch.await();等待所有线程结束后继续往下执行

CyclicBarrier

循环栅栏,也是线程协作。等线程数满足计数器时,才开始执行,比如等待人齐了开始干活。
cb.await(); // 当个数不足时,等待

也可以在所有任务开始之前进行某些任务,所有线程的await()之后先执行下面线程方法。

CyclicBarrier cb = new CyclicBarrier(2, new Runnable() {
            @Override
            public void run() {
                System.out.println("哈哈");
            }
        }) ;
上一篇 下一篇

猜你喜欢

热点阅读