关键词:BlockingQueue DelayedWorkQueue ScheduledFutureTask ScheduledThreadPoolExecutor
在ScheduledThreadPoolExecutor这种类型的ThreadPoolExecutor线程池中,使用到的阻塞队列为DelayedWorkQueue,并且需要了解ScheduledFutureTask。为方便ScheduledThreadPoolExecutor的学习,这里先介绍DelayedWorkQueue、ScheduledFutureTask。
█ DelayedWorkQueue
DelayedWorkQueue实现了BlockingQueue接口,其是在ScheduledThreadPoolExecutor中定义的一个内部类。
static class DelayedWorkQueue extends AbstractQueue<Runnable>
implements BlockingQueue<Runnable>
从DelayedWorkQueue的类定义上面可以看出,泛型为Runnable,即DelayedWorkQueue队列中存放的元素类型为Runnable类型。
字段:
private static final int INITIAL_CAPACITY = 16;
private RunnableScheduledFuture<?>[] queue =
new RunnableScheduledFuture<?>[INITIAL_CAPACITY];
private final ReentrantLock lock = new ReentrantLock();
private int size = 0;
private Thread leader = null;
private final Condition available = lock.newCondition();
- queue
RunnableScheduledFuture类型的数组,从DelayedWorkQueue类的定义上已经看见,其声明的泛型类型为Runnable类型,实际上队列中存放的具体类型为RunnableScheduledFuture。
public interface RunnableScheduledFuture<V> extends RunnableFuture<V>, ScheduledFuture<V> {
boolean isPeriodic();
}