码迷,mamicode.com
首页 > 编程语言 > 详细

Java中的并发工具类

时间:2017-08-05 22:00:00      阅读:134      评论:0      收藏:0      [点我收藏+]

标签:并发   down   UI   exchanger   his   计数器   实现原理   资源   结束   

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中的并发工具类

标签:并发   down   UI   exchanger   his   计数器   实现原理   资源   结束   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!