1.CountDownLatch:被用来同步一个或多个的同步任务,强制它们等待由其他任务执行的一组操作完成。可以向CountDownLatch对象设置一个初始计数值,任何在这个对象上调用wait()方法都将阻塞,直到这个计数值到达0。其他任务在结束工作的时候,可以在这个对象上调用countDown()来减小这个计数值。典型用法:把一个任务分割成n个独立的可解决任务,并创建值为0的CountDownLatch,当每个任务完成时,都会在这个锁存器上调用CountDown(),等待问题被解决的任务在这个锁存器上调用await(),将自己拦住,知道锁存器计数结束。
2.CyclicBarrier:适用于这样情况:希望创建一组任务,他们并行的执行工作,然后在进行下一个步骤之前等待,知道所有的任务完成。可以使得所有的并行任务都将在栅栏出队列,可以一致的向前移动。
3.DelayQueue:是一个无界的BlockingQueue,用于放置实现了Delayed接口的对象,其中的对象只能在其到期才能从队列中取走。这种队列是有序的。对头对象的延迟到期时间最长,如果没有任何延迟到期,那么就不会有任何头元素,并且poll()放回null。
4.PriorityBlockingQueue:这是一个很基础的优先级队列,它具有可阻塞的读取操纵。在优先级队列中的对象是按照优先级顺序从队列中出现的任务。