java-多线程-CountDownLatch(闭锁) CyclicBarrier(栅栏) Semaphore(信号量)-

简介: java-多线程-CountDownLatch(闭锁) CyclicBarrier(栅栏) Semaphore(信号量)-

(代码来源网络共享)

这几个工具类其实说白了就是为了能够更好控制线程之间的通讯问题~

CountDownLatch

是一个同步的辅助类,允许一个或多个线程一直等待直到其它线程完成它们的操作。

常用的API其实就两个:await()countDown()

例子:例子:rodert现在去做实习生了,其他的员工还没下班,rodert不好意思先走,等其他的员工都走光了,rodert再走。

package threadMy;
 
import java.util.concurrent.CountDownLatch;
 
public class CountDownLatchTest {
 
  public static void main(String[] args) {
 
    final CountDownLatch countDownLatch = new CountDownLatch(5);
 
    System.out.println("现在6点下班了.....");
 
    // rodert线程启动
    new Thread(new Runnable() {
      @Override
      public void run() {
 
        try {
          // 这里调用的是await()不是wait()
          countDownLatch.await();
        } catch (InterruptedException e) {
          e.printStackTrace();
        }
        System.out.println("...其他的5个员工走光了,rodert终于可以走了");
      }
    }).start();
 
    // 其他员工线程启动
    for (int i = 0; i < 5; i++) {
      new Thread(new Runnable() {
        @Override
        public void run() {
          System.out.println("员工xxxx下班了");
          countDownLatch.countDown();
        }
      }).start();
    }
  }
}

CyclicBarrier

目录
相关文章
|
9月前
|
Java
【源码】【Java并发】【AQS】从ReentrantLock、Semaphore、CutDownLunch、CyclicBarrier看AQS源码
前言 主播觉得,AQS的原理,就是通过这2个队列的协助,实现核心功能,同步队列(CLH队列)和条件队列(Condition队列)。 同步队列(CLH队列) 作用:管理需要获...
194 18
【源码】【Java并发】【AQS】从ReentrantLock、Semaphore、CutDownLunch、CyclicBarrier看AQS源码
JAVA并发编程系列(7)Semaphore信号量剖析
腾讯T2面试,要求在3分钟内用不超过20行代码模拟地铁安检进站过程。题目设定10个安检口,100人排队,每人安检需5秒。实际中,这种题目主要考察并发编程能力,特别是多个线程如何共享有限资源。今天我们使用信号量(Semaphore)实现,限制同时进站的人数,并通过信号量控制排队和进站流程。并详细剖析信号量核心原理和源码。
|
Java 测试技术 开发者
Java面试题:解释CountDownLatch, CyclicBarrier和Semaphore在并发编程中的使用
Java面试题:解释CountDownLatch, CyclicBarrier和Semaphore在并发编程中的使用
199 12
|
Java 数据中心 微服务
Java高级知识:线程池隔离与信号量隔离的实战应用
在Java并发编程中,线程池隔离与信号量隔离是两种常用的资源隔离技术,它们在提高系统稳定性、防止系统过载方面发挥着重要作用。
473 0
|
Java 数据库
深入解析Java并发包(JUC)中的Semaphore
深入解析Java并发包(JUC)中的Semaphore
|
存储 监控 Java
Java多线程优化:提高线程池性能的技巧与实践
Java多线程优化:提高线程池性能的技巧与实践
586 1
|
设计模式 监控 Java
Java多线程基础-11:工厂模式及代码案例之线程池(一)
本文介绍了Java并发框架中的线程池工具,特别是`java.util.concurrent`包中的`Executors`和`ThreadPoolExecutor`类。线程池通过预先创建并管理一组线程,可以提高多线程任务的效率和响应速度,减少线程创建和销毁的开销。
1020 2
|
Java 数据库
【Java多线程】对线程池的理解并模拟实现线程池
【Java多线程】对线程池的理解并模拟实现线程池
165 1
|
安全 算法 Java
17 Java多线程(线程创建+线程状态+线程安全+死锁+线程池+Lock接口+线程安全集合)(下)
17 Java多线程(线程创建+线程状态+线程安全+死锁+线程池+Lock接口+线程安全集合)
232 6
|
存储 安全 Java
17 Java多线程(线程创建+线程状态+线程安全+死锁+线程池+Lock接口+线程安全集合)(中)
17 Java多线程(线程创建+线程状态+线程安全+死锁+线程池+Lock接口+线程安全集合)
263 5

热门文章

最新文章