1 类继承关系
2 代码详情
AbstractEventExecutor
类签名
public abstract class AbstractEventExecutor extends AbstractExecutorService implements EventExecutor
它是一个抽象类
继承了AbstractExecutorService它是jdk中的类,它提供了这些方法的模板方法,方法中的调用的子函数在子类中实现
- public Future<?> submit(Runnable task)
- public T invokeAny(Collection<? extends Callable> tasks)
- public List<Future> invokeAll(Collection<? extends Callable> tasks)
字段
parent
-
private final EventExecutorGroup parent; - 表示的是这个EventExecutor处于哪个EventExecutorGroup组中
selfCollection
- private final Collection selfCollection = Collections.singleton(this);
- 是一个包含只包含自身的集合
共有方法
构造函数protected AbstractEventExecutor(EventExecutorGroup parent)
- this.parent = parent;
获取parent
- @Override public EventExecutorGroup parent() { return parent; }
实现next
-
public EventExecutor next() { return this; }@Override - EventExecutor继承了EventExecutorGroup,这个方法是属于EventExecutorGroup的,然后在next的语义在EventExecutor中的是存在的,所以这里next的实现只是方法自己
获取迭代器
- @Override public Iterator iterator() { return selfCollection.iterator(); }
- 这个地方的语义同next
优雅关闭
- @Override public Future<?> shutdownGracefully() { return shutdownGracefully(DEFAULT_SHUTDOWN_QUIET_PERIOD, DEFAULT_SHUTDOWN_TIMEOUT, TimeUnit.SECONDS); }
- 这个地方只是提供默认参数
newPromise
- @Override public Promise newPromise() { return new DefaultPromise(this); }
newProgressivePromise
- @Override public ProgressivePromise newProgressivePromise() { return new DefaultProgressivePromise(this); }
newSucceededFuture
- @Override public Future newSucceededFuture(V result) { return new SucceededFuture(this, result); }
newFailedFuture
- @Override public Future newFailedFuture(Throwable cause) { return new FailedFuture(this, cause); }
submit
-
public Future submit(Runnable task) { return (Future) super.submit(task); }@Override -
public Future submit(Runnable task, T result) { return (Future) super.submit(task, result); }@Override -
public Future submit(Callable task) { return (Future) super.submit(task); }@Override - 这个地方都只是调用了父类AbstractExecutorService中的模板方法
newTaskFor
- @Override protected final RunnableFuture newTaskFor(Runnable runnable, T value) { return new PromiseTask(this, runnable, value); }
-
protected final RunnableFuture newTaskFor(Callable callable) { return new PromiseTask(this, callable); }@Override - 这个地方覆写了父类AbstractExecutorService中的方法,所以这样就使得提交到线程池中执行的不在是FutureTask,而是PromiseTask