EventLoop体系

228 阅读1分钟

EventExecutor 和 EventExecutorGroup

image.png 如上为EventExecutor和EventExecutorGroup的类体系的结构;

EventExecutorGroup继承了jdk的ScheduledExecutorService了,从字面来说它表示的是一组

EventExecutor,你可以通过next方法获取下一个EventExecutor,同时它额外提供了一种所谓“优雅”关闭的能力,

Future<?> shutdownGracefully(long quietPeriod, long timeout, TimeUnit unit);
unit是quietPeriod, timeout的时间单位,
quietPeriod的意思是说,从你调用shutdownGracefully方法之后,如果过了quietPeriod,也没有任务在提交了,那么这个时候,就shutdown,

如果在quietPeriod之内,有任务再提交,那么就需要重新在开始计时,

timeout这个字段的意思是说只要过了timeout这么多时间了,那么这个时候就立即shutdown,而不去管quietPeriod的规则了;

EventExecutor提供了一系列方便的方法去查看线程是否运行在event loop中,除此之外它还继承了EventExecutorGroup,这点不太好理解;

EventLoopGroup 和 EventLoop

image.png EventLoopGroup继承于EventExecutorGroup,它是一个特殊的EventExecutorGroup,它是一组EventLoop可以注册Channel;

EventLoop,用于处理一个已经注册的Channel的所有的i/o操作,同时由于它继承了

OrderedEventExecutor,则表示它会串行的执行,提交进来的任务;另外它也继承了EventLoopGroup这点和EventExecutor继承EventExecutorGroup一样不是太好理解;
OrderedEventExecutor接口,是一个标记性的接口,它表示实现了这个接口的类,会串行的执行,提交进来的任务;