首页 > 编程语言 > 详细

Java中的并发工具类

时间:2017-08-05 21:48:26      阅读:204      评论:0      收藏:0      [点我收藏+]

1、等待多线程完成的CountDownLatch        

CountDownLatch允许一个或多个线程等待其他线程完成操作。join用于让当前执行线程等待join线程执行结束。其实现原理是不停检查join线程是否存活,如果join线程存活则让当前线程永远等待。直到join线程中止后,线程的this.notifyAll()方法会被调用,调用notifyAll()方法是在JVM里实现的。

 

2、同步屏障CyclicBarrier                            

CylicBarrier的字面意思是可循环使用(Cyclic)的屏障(Barrier)。它让一组线程到达一个屏障(也可以叫同步点)时被阻塞,直到最后一个线程到达屏障时,屏障才会开门,所有被屏障拦截的线程才会继续运行。

CountDownLatch的计数器只能使用一次,而CyclicBarrier的计数器可以使用rest()方法重置。所以CyclicBarrier能处理更为复杂的业务场景。

 

3、控制并发线程数的Semaphore                  

Semaphore(信号量)是用来控制同时访问特定资源的线程数量,它通过协调各个线程,以保证合理的使用公共资源。

Semaphore可以用于流量控制,特别是公用资源有限的应用场景,比如数据库连接。

Semaphore的用法:首先线程使用Semaphore的acquire()方法获取一个许可证,使用完之后调用release()方法归还许可证。还可以用tryAcquire()方法尝试获取许可证。

 

4、线程间交换数据的Exchanger                    

Exchanger(交换者)是一个用于线程间协作的工具类。Exchanger提供一个同步点,在这个同步点,两个线程可以交换彼此的数据。分别调用exchange()方法。

Exchanger可以用于遗传算法,校对工作。

Java中的并发工具类

原文:http://www.cnblogs.com/fankongkong/p/7291404.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!