Executor

ExecutorService

AbstractExecutorService

ThreadPoolExecutor

ThreadPoolExecutor继承AbstractExecutorService,是一个线程池的具体的实现

内部类 Worker

    private final class Worker
        extends AbstractQueuedSynchronizer
        implements Runnable 

 代表线程池的一个工作线程,继承了AbstractQueuedSynchronizer,将该类实现为一个简单的互斥锁 。

重要的成员:

    final Thread thread;
    Runnable firstTask;
    volatile long completedTasks;

Worker封装了执行任务的线程,首次执行的任务,完成的任务数。

        Worker(Runnable firstTask) {
            setState(-1); // inhibit interrupts until runWorker
            this.firstTask = firstTask;
            this.thread = getThreadFactory().newThread(this);
        }

Worker初始化设置state为 -1(1表示锁被占用,0表示未被占用),因为 interruptIfStarted 方法中有 getState() >= 0,这样刚初始化还没运行task的线程不能被中断。

1         void interruptIfStarted() {
2             Thread t;
3             if (getState() >= 0 && (t = thread) != null && !t.isInterrupted()) {
4                 try {
5                     t.interrupt();
6                 } catch (SecurityException ignore) {
7                 }
8             }
9         }
View Code

相关文章: