8.Java中的并发工具类

CountDownLatch:等待多线程完成。计数器必须大于等于0,只是等于0时候,计数器就是0,调用await方法是不会阻塞当前线程。CountDownLatch不可能重新初始化或者修改CountDownLatch对象的内部计数器的值。一个线程调用countDown方法hapeens-before另外一个线程调用await方法。

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

CountDownLatch的计数器只能使用一次,而CyclicBarrier的计数器可以使用reset()方法重置。CyclicBarrier还提供其他有用的方法,比如getNumberWaiting方法可以获得CyclicBarrier阻塞的线程数量,isBroken()方法用来了解阻塞的线程是否被中断。

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

Exchanger是一个用于线程间协作的工具类。Exchanger用于进行线程间的数据交换。它提供一个同步点,在这个同步点,两个线程可以交换彼此的数据。

results matching ""

    No results matching ""