同步工具类:CountDownLatch、CyclicBarrier和Semaphore
2016-09-17 23:28
671 查看
一、CountDownLatch用法
CountDownLatch类位于java.util.concurrent包下,利用它可以实现类似计数器的功能。比如有一个任务A,它要等待其他4个任务执行完毕之后才能执行,此时就可以利用CountDownLatch来实现这种功能了。二、CyclicBarrier用法
字面意思回环栅栏,通过它可以实现让一组线程等待至某个状态之后再全部同时执行。叫做回环是因为当所有等待线程都被释放以后,CyclicBarrier可以被重用。我们暂且把这个状态就叫做barrier,当调用await()方法之后,线程就处于barrier了。三、Semaphore用法
Semaphore翻译成字面意思为 信号量,Semaphore可以控同时访问的线程个数,通过 acquire() 获取一个许可,如果没有就等待,而 release() 释放一个许可。四、三者的比较
下面对上面说的三个辅助类进行一个总结:1)CountDownLatch和CyclicBarrier都能够实现线程之间的等待,只不过它们侧重点不同:
CountDownLatch一般用于某个线程A等待若干个其他线程执行完任务之后,它才执行;
而CyclicBarrier一般用于一组线程互相等待至某个状态,然后这一组线程再同时执行;
另外,CountDownLatch是不能够重用的,而CyclicBarrier是可以重用的。
2)Semaphore其实和锁有点类似,它一般用于控制对某组资源的访问权限。
相关文章推荐
- 23-同步工具类之CountDownLatch、CyclicBarrier和Semaphore
- 并发包下常见的同步工具类详解(CountDownLatch,CyclicBarrier,Semaphore)
- Java多线程之同步工具类(CountDownLatch、CyclicBarrier、Semaphore)
- Java并发:同步工具类详解(CountDownLatch、CyclicBarrier、Semaphore)
- Java并发编程之2——同步工具类的使用(CountDownLatch,CyclicBarrier,BlockungQueue,Semaphore)
- AbstractQueuedSynchronizer在工具类ReentrantLock、Semaphore、CountDownLatch、CyclicBarrier中的应用
- AbstractQueuedSynchronizer在工具类Semaphore、CountDownLatch、ReentrantLock中的应用和CyclicBarrier
- Java线程(CountDownLatch、CyclicBarrier、Semaphore)并发控制工具类
- AbstractQueuedSynchronizer在工具类ReentrantLock、Semaphore、CountDownLatch、CyclicBarrier中的应用
- JAVA多线程系列--并发工具类(CountDownLatch, CyclicBarrier, Semaphore,Exchanger)
- 并发工具类:CountDownLatch、CyclicBarrier、Semaphore
- 多线程系列十一-同步CountDownLatch、CyclicBarrier和Semaphore
- 第8章 Java中的并发工具类(CountDownLatch CyclicBarrier Semaphore Exchanger)
- Java并发同步之CountDownLatch、CyclicBarrier和Semaphore
- Java/Android多线程并发、同步,线程之间通信,主、子线程的一些问题(CountDownLatch、CyclicBarrier和Semaphore)
- 四个并发工具类CountDownLatch,CyclicBarrier,Semaphore,Exchanger
- Java中的并发工具类:CountDownLatch、CyclicBarrier和Semaphore
- java多线程之闭锁(CountDownLatch)、同步屏幕(CyclicBarrier)、信号量(Semaphore)
- 【Java多线程】JUC包下的工具类CountDownLatch、CyclicBarrier和Semaphore
- 并发工具类CountDownLatch与CyclicBarrier的区别