我们一起聊聊并发编程:同步工具类

开发 开发工具
CyclicBarrier 所要同步的线程个数是在构造方法中指定的,之后不能更改,而 Phaser 可以在运行 期间动态地调整要同步的线程个数。

一、Semaphore

Semaphore也就是信号量,提供了资源数量的并发访问控制。

使用场景:大学生到自习室抢座,写作业。

二、CountDownLatch

假设一个主线程要等待5个 Worker 线程执行完才能退出,可以使用CountDownLatch来实现。

三、CyclicBarrier

该类用于协调多个线程同步执行操作的场合。

使用场景:10个工程师一起来公司应聘,招聘方式分为笔试和面试。首先,要等人到齐后,开始笔 试;笔试结束之后,再一起参加面试。

四、Exchanger

Exchanger用于线程之间交换数据。

五、Phaser

用Phaser替代CyclicBarrier和CountDownLatch。

从JDK7开始,新增了一个同步工具类Phaser,其功能比CyclicBarrier和CountDownLatch更加强大。

特性1:动态调整线程个数

CyclicBarrier 所要同步的线程个数是在构造方法中指定的,之后不能更改,而 Phaser 可以在运行 期间动态地调整要同步的线程个数。

特性2:层次Phaser

多个Phaser可以组成如下图所示的树状结构

责任编辑:武晓燕 来源: 今日头条
相关推荐

2023-07-11 08:34:25

参数流程类型

2023-08-10 08:28:46

网络编程通信

2024-02-26 00:00:00

Go性能工具

2022-05-24 08:21:16

数据安全API

2023-08-04 08:20:56

DockerfileDocker工具

2023-09-10 21:42:31

2023-06-30 08:18:51

敏捷开发模式

2021-08-27 07:06:10

IOJava抽象

2024-02-20 21:34:16

循环GolangGo

2023-06-30 08:27:20

2023-11-29 07:10:50

python协程异步编程

2022-09-22 08:06:29

计算机平板微信

2023-03-26 23:47:32

Go内存模型

2023-07-24 09:41:08

自动驾驶技术交通

2024-07-26 09:47:28

2022-10-08 00:00:05

SQL机制结构

2021-08-12 07:49:24

mysql

2022-02-23 08:41:58

NATIPv4IPv6

2024-11-28 09:57:50

C#事件发布器

2022-10-28 07:27:17

Netty异步Future
点赞
收藏

51CTO技术栈公众号