表1 java.util.concurrent同步器
类 | 它能做什么 | 何时使用 |
CyclicBarrier | 允许线程集等待直至其中预定数目的线程达到一个公共障栅(barrirer),然后可以选择执行一个处理障栅的动作 | 当大量的线程需要在它们的结果可用之前完成时 |
CountDownLatch | 允许线程集等待知道计数器为0 | 当一个或多个现场需要等待知道指定书目的事件发生 |
Exchanger | 允许两个线程在要交换的对象准备好时交换对象 | 当两个线程工作在同一数据结构的两个实例上的时候,一个向实例添加数据而另一个从实例清除数据 |
Semaphore | 允许线程集等待直到允许继续运行为止 | 限制访问资源的线程总数,如果许可数为1,常常阻塞线程知道另个一个线程给出许可为止 |
SynchronousQueue | 允许一个线程把对象交给另一个线程 | 在没有显式同步的情况下,当两个线程准备好将一个对象从一个线程传递到另一个时 |