- 2
- 0
- 约7.11万字
- 约 36页
- 2021-04-04 发布于北京
- 举报
JUC 多线程 (三)
学习目标:
掌握CyclicBarrier同步屏障的使用
掌握CountDownLatch的使用
掌握Semaphore信号量的使用
掌握ConcurrentHashMap同步容器的使用
掌握四种BlockingQueue阻塞队列的使用
掌握线程池的使用,了解内置的四种线程池
11 J.U.C之并发工具类
11.1 CyclicBarrier
11.1.1
CyclicBarrier也叫同步屏障,在JDK1.5 被引入的一个同步辅助类,在API 这么 的:
允许一组线程全部等待彼此达到共同屏障点的同步辅助。 循环阻塞在涉及固定大小的线程方的程序中很有用,这
些线程必须偶尔等待彼此。 屏障被称为循环,因为它可以在等待的线程被 之后重新使用。
CyclicBarrier好比一扇门,默认情况下关闭状态,堵住了线程执行的道路,直到所有线程都就位,门才
打开,让所有线程一起通过。
11.1.2 实现
市昌平区建材城西路金燕龙办公楼一层 电话:
通过上图我们可以看到CyclicBarrier的内部是使用重入锁ReentrantLock和Condition。它有两个构造方
法:
CyclicBarrier(int parties) :它将在给定数量的参与者(线程)处于等待状态时启动,但它不会在
启动屏障时执行预定义的操作。parties表示拦截线程的数量。
CyclicBarrier(int parties, Runnable barrierAction) :创建一个新的 CyclicBarrier ,它将在给定数
量的参与者(线程)处于等待状态时启动,并在启动屏障时执行给定的屏障操作,该操作由最后一
个进入屏障的线程执行。
构造方法如下:
ublic yclicBarrier nt arties unnable arrierAction {
p C (i p , R b )
f ( arties hrow ew llegalArgumentException );
i p 0) t n I (
his arties arties
t .p p ;
his ount arties
t .c p ;
his arrierCommand arrierAction
t .b b ;
}
ublic yclicBarrier nt arties {
p C (i p )
his arties ull ;
t (p , n )
}
在CyclicBarrier中最重要的方法莫过于await()方法,每个线程调用await方法告诉CyclicBarrier已经到达
屏障位置,线程被阻塞。源码如下:
ublic nt wait ) hrows nterruptedException
原创力文档

文档评论(0)