SychronousQueue 总结
SynchronousQueue 由于其独有的线程一一配对通信机制,在大部分平常开发中,可能都不太会用到,但线程池技术中会有所使用,由于内部没有使用 AQS,而是直接使用 CAS,所以代码理解起来会比较困难,但这并不妨碍我们理解底层的实现模型,在理解了模型的基础上,有兴趣的话再查阅源码,就会有方向感,看起来也会比较容易,希望本文有所
借鉴意义。
DelayQueue 定义和原理
DelayQueue 的关键元素 BlockingQueue、PriorityQueueDelayed。可以这么说,DelayQueue 是一个使用优先队列(PriorityQueue)实现的 BlockingQueue,优先队列的比较基准值是时间
它们的基本定义如下
public interface Comparable
{ public int compareTo(T o);
}
public interface Delayed extends Comparable
{ long getDelay(TimeUnit unit);
}
public class DelayQueue implements BlockingQueue
{ private final PriorityQueue q = new PriorityQueue();
}
DelayQueue 内部的实现使用了一个优先队列。当调用 DelayQueue 的 offer 方法时,把 Delayed 对象加入到优
先队列 q 中。如下:
public boolean offer(E e) {
final ReentrantLock lock = this.lock;
lock.lock();
try {
E first = q.peek();
q.offer(e);
if (first == null || e.compareTo(first) < 0)
available.signalAll();
return true;
} finally {
lock.unlock();
} }
SychronousQueue 总结 DelayQueue 定义和原理
最新推荐文章于 2023-05-29 13:26:51 发布