023--Java并发包中的高级同步工具+面试题

VIP免费
2024-12-11 1 0 120.49KB 12 页 5.9玖币
侵权投诉
Java 并发包中的高级同步工具 + 面试题
Java 中的并发包指的是 java.util.concurrent (简称 JUC )包和其子包下的类和接口,它为
Java 的并发提供了各种功能支持,比如:
提供了线程池的创建类 ThreadPoolExecutorExecutors 等;
提供了各种锁,如 LockReentrantLock 等;
提供了各种线程安全的数据结构,如
ConcurrentHashMapLinkedBlockingQueueDelayQueue 等;
提供了更加高级的线程同步结构,如 CountDownLatchCyclicBarrierSemaphore
等。
在前面的章节中我们已经详细地介绍了线程池的使用、线程安全的数据结构等,本文我们
就重点学习一下 Java 并发包中更高级的线程同步类:
CountDownLatchCyclicBarrierSemaphore Phaser 等。
CountDownLatch 介绍和使用
CountDownLatch(闭锁)可以看作一个只能做减法的计数器,可以让一个或多个线程等
待执行。
CountDownLatch 有两个重要的方法:
countDown() :使计数器减 1
await() :当计数器不为 0 时,则调用该方法的线程阻塞,当计数器为 0 时,可以唤
醒等待的一个或者全部线程。
CountDownLatch 使用场景:
以生活中的情景为例,比如去医院体检,通常人们会提前去医院排队,但只有等到医生开
始上班,才能正式开始体检,医生也要给所有人体检完才能下班,这种情况就要使用
CountDownLatch ,流程为:患者排队 医生上班 体检完成 医生下班。
CountDownLatch 示例代码如下:
// 医院闭锁
CountDownLatch hospitalLatch = new CountDownLatch(1);
// 患者闭锁
CountDownLatch patientLatch = new CountDownLatch(5);
System.out.println("患者排队");
ExecutorService executorService = Executors.newCachedThreadPool();
for (int i = 0; i < 5; i++) {
final int j = i;
executorService.execute(() -> {
try {
hospitalLatch.await();
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("体检:" + j);
patientLatch.countDown();
});
}
System.out.println("医生上班");
hospitalLatch.countDown();
patientLatch.await();
System.out.println("医生下班");
executorService.shutdown();
以上程序执行结果如下:
患者排队
医生上班
体检:4
体检:0
体检:1
体检:3
体检:2
医生下班
执行流程如下图:
CyclicBarrier 介绍和使用
CyclicBarrier(循环屏障)通过它可以实现让一组线程等待满足某个条件后同时执行。
CyclicBarrier 经典使用场景是公交发车,为了简化理解我们这里定义,每辆公交车只要上
4 个人就发车,后面来的人都会排队依次遵循相应的标准。
摘要:

Java并发包中的高级同步工具+面试题Java中的并发包指的是java.util.concurrent(简称JUC)包和其子包下的类和接口,它为Java的并发提供了各种功能支持,比如:•提供了线程池的创建类ThreadPoolExecutor、Executors等;•提供了各种锁,如Lock、ReentrantLock等;•提供了各种线程安全的数据结构,如ConcurrentHashMap、LinkedBlockingQueue、DelayQueue等;•提供了更加高级的线程同步结构,如CountDownLatch、CyclicBarrier、Semaphore等。在前面的章节中我们已经详细地...

展开>> 收起<<
023--Java并发包中的高级同步工具+面试题.docx

共12页,预览3页

还剩页未读, 继续阅读

声明:本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。玖贝云文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知玖贝云文库,我们立即给予删除!

相关推荐

分类:计算机 价格:5.9玖币 属性:12 页 大小:120.49KB 格式:DOCX 时间:2024-12-11

开通VIP享超值会员特权

  • 多端同步记录
  • 高速下载文档
  • 免费文档工具
  • 分享文档赚钱
  • 每日登录抽奖
  • 优质衍生服务
/ 12
客服
关注