1 类继承关系
2 代码详情
SingleThreadEventLoop
类签名
public abstract class SingleThreadEventLoop extends SingleThreadEventExecutor implements EventLoop
实现了EventLoop接口的抽象类
字段
private final Queue tailTasks;
方法
构造函数:除了会调用父类SingleThreadEventExecutor的构造函数,也会构建tailTasks=new LinkedBlockingQueue(maxPendingTasks);
- 默认创建的是LinkedBlockingQueue,如果要改变这个行为可以在子类覆盖 protected Queue newTaskQueue(int maxPendingTasks)
public ChannelFuture register(Channel channel)
- return register(new DefaultChannelPromise(channel, this));
- 实现的是EventLoopGroup中的方法
public ChannelFuture register(final ChannelPromise promise)
- 实现的是EventLoopGroup中的方法
- ObjectUtil.checkNotNull(promise, "promise");
- promise.channel().unsafe().register(this, promise);
- return promise;
public final void executeAfterEventLoopIteration(Runnable task)
- ObjectUtil.checkNotNull(task, "task");
- if (isShutdown()) { reject(); }
- if (!tailTasks.offer(task)) { reject(task); }
- if (!(task instanceof LazyRunnable) && wakesUpForTask(task)) { wakeup(inEventLoop()); }
final boolean removeAfterEventLoopIterationTask(Runnable task)
- return tailTasks.remove(ObjectUtil.checkNotNull(task, "task"));
protected void afterRunningAllTasks()
- runAllTasksFrom(tailTasks);
- 覆盖了父类中的一个钩子方法,使得在关闭的时候,也会执行这个tailTasks队列中的任务