Java中的并发工具类

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java中的并发工具类相关的知识,希望对你有一定的参考价值。

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中的并发工具类的主要内容,如果未能解决你的问题,请参考以下文章

Java中的并发工具类

Java中的并发工具类

《java并发编程实战》读书笔记4--基础构建模块,java中的同步容器类&并发容器类&同步工具类,消费者模式

Java中的并发工具类

Java多线程(线程池原子性并发工具类)

多线程与并发Java并发工具类