CountDownLatch CyclicBarrier DelayQueue PriorityBlockingQueue

来源:互联网 发布:java技能要求 编辑:程序博客网 时间:2024/06/05 15:31

CountDownLatch相当于一个计算器,你可以往CountDownLatch中设置一个初始数值,任何在这个对象上调用wait()方法将被阻塞,知道计数值为0.其他对象在该对象调用countDown()来减少这个数值。CountDownLatch被设计为指触发一次,计数值不能被重置,如果是要重置的,则可以使用CyclicBarrier。调用countDown()时不会被组晒,只有对await()调用是才会阻塞,直到计算器为0。

CyclicBarrier适用于你希望创建一组任务,他们并行地工作,然后在进行下一个步骤之前等待,知道所有任务都完成。他使得所有任务都将在栅栏出队列,因此可以一致地向前移动。可以向CyclicBarrier提供一个“栅栏动作”,它是一个Runnable,但计数值到达0时自动执行。

DelayQueue是一个无界的BlockingQueue,用语防止实现了Delayed接口的对象,其中的对象只能在其中到期时才能从队列中取走,这个队列是有序的。

PriorityBlockingQueue是一个基础的优先级队列,他具有可阻塞的读取操作。