【java】多线程控制(一)---Semaphore、Exchanger、CyclicBarrier、CountDownLatch
来源:互联网 发布:昆明行知中学校花 编辑:程序博客网 时间:2024/06/05 05:49
【Semaphore】
简单说明:信号灯,可以控制某个资源可被同时访问的个数。
使用方法:
1、new一个实例:Semapore sp = new Semapore(num); // num 是可以呗同时访问的数目。
2、需要访问某个资源前,调用acquire(), 尝试获取访问许可,如果访问数达到上限,此线程就会被挂起。
3、使用资源后,调用release() ,解除锁定,此时如果有被挂起的线程,就会被唤醒并获得访问许可。
【Exchanger】
简单说明:Exchanger可以在两个线程之间交换数据,只能是2个线程,他不支持更多的线程之间互换数据。
使用方法:
1、new一个实例:Exchanger exchanger = new Exchanger();
2、在第一个线程中,在需要交换的数据的位置,调用exchange(data1),此时线程会被挂起,等待第二个线程也调用交换数据的方法。
3、在第二个线程中,在需要交换的数据的位置,调用exchange(data2),此时两个数据交换完成,两个线程均继续执行。
【CyclicBarrier】
简单说明:CyclicBarrier允许一组线程互相等待,直到到达某个标记点。
使用方法:
1、new一个实例:CyclicBarrier cb = new CyclicBarrier(num); // 互相等待的线程数目
2、在需要集合等待其他线程的位置调用await(),这时这个线程会被挂起,直到调用await()的数目达到num后,继续执行。
ps:同一个线程中可以设置多个集合点。
【CountDownLatch】
简单说明:在完成一组正在其他线程中执行的操作之前,它允许一个或多个线程一直等待。
使用方法:
1、new一个实例:CountDownLatch cd = new CountDownLatch(num); //计数器的数目
2、一个完成任务的线程需要调用countDown(),以此使计数器的数目自减1。
3、需要等待的线程需要调用await(),当计数器减为0后,此线程继续执行。
ps:CountDownLatch只能使用一次,如果有更多的地方也需要这种等待机制,需要建立更多的CountDownLatch。
- 【java】多线程控制(一)---Semaphore、Exchanger、CyclicBarrier、CountDownLatch
- Java多线程(八)之Semaphore、CountDownLatch、CyclicBarrier、Exchanger
- Java多线程(八)之Semaphore、CountDownLatch、CyclicBarrier、Exchanger
- java 多线程同步辅助类(CountDownLatch、CyclicBarrier、Semaphore、Exchanger)
- JAVA多线程系列--并发工具类(CountDownLatch, CyclicBarrier, Semaphore,Exchanger)
- CyclicBarrier CountDownLatch Semaphore Exchanger
- Java基础:多线程之CountDownLatch、CyclicBarrier、Exchanger
- 多线程编程的常用类(CountDownLatch, Semaphore, CyclicBarrier 和 Exchanger)
- 多线程- countdownlatch、 CyclicBarrier、SemaPhore
- 第8章 Java中的并发工具类(CountDownLatch CyclicBarrier Semaphore Exchanger)
- Java线程(CountDownLatch、CyclicBarrier、Semaphore)并发控制工具类
- java 多线程 操作 CountDownLatch、Semaphore和CyclicBarrier
- java多线程并发(一)Semaphore,volatile,synchronized ,Lock, CyclicBarrier和CountDownLatch
- 黑马程序员-Semaphore、CyclicBarrier、CountDownLatch、Exchanger
- Join,CountDownLatch,CyclicBarrier,Semaphore和Exchanger
- 多线程并发控制CountDownLatch和CyclicBarrier和Semaphore
- 多线程并发常用类:condition,semaphore,CyclicBarrier,countdownlatch,exchanger使用整理
- 《Java 7 并发编程指南》学习概要 (3)Semaphore, CountDownLatch, CyclicBarrier , Phaser, Exchanger
- vi编辑时出现E325:ATTENTION
- 常用正则表达式(一)
- 状态栏着色;沉浸式
- python中的魔法参数:*args和**kwargs
- Redis学习总结和相关资料
- 【java】多线程控制(一)---Semaphore、Exchanger、CyclicBarrier、CountDownLatch
- 浅谈Java中的hashcode方法
- [51单片机] 一个故事看懂单片机中的堆栈
- GObject 学习笔记汇总---1
- network in network
- CRTMPServer 在CentOS 64-bit下的编译
- 常用正则表达式(二)
- javascript关键字和保留字
- js实现页面跳转重定向的几种方式