netty源码解析(4.0)-5 线程模型-EventExecutorGroup框架

本文深入探讨了Netty的EventExecutorGroup的实现,包括EventExecutorGroup和EventExecutor接口,多线程模型的实现如MultithreadEventExecutorGroup和SingleThreadEventExecutor,以及它们如何优雅地进行关闭操作。重点讲述了线程管理和任务调度策略,建议将线程数设置为2的幂次以提高性能。
摘要由CSDN通过智能技术生成

上一章讲了EventExecutorGroup的整体结构和原理,这一章我们来探究一下它的具体实现。

EventExecutorGroup和EventExecutor接口

io.netty.util.concurrent.EventExecutorGroup

java.util.concurrent.ScheduledExecutorService

EventExecutorGroup继承了ScheduledExecutorService接口,它自己定义了如下的新方法

方法

说明

EventExecutor next()

取出一个EventExecutor, 这个方法要实现派发任务的策略。

Future<?> shutdownGracefully(long quietPeriod, long timeout, TimeUnit unit);

优雅地关闭这个executor, 一旦这个方法被调用,isShuttingDown()方法总是总是返回true。和 shutdown方法不同,这个方法需要确保在关闭的平静期(由quietPeriod参数决定)没有新的任务被提交,如果平静期有新任务提交,它会接受这个任务,同时中止关闭动作,等任务执行完毕后从新开始关闭流程。

Future<?> shutdownGracefully()

shutdownGracefully(long quietPeriod, long timeout, TimeUnit unit)快捷调用方式。

boolean isShuttingDown()

检查是否已经调用了shutdownGracefully或shutdown方法。

io.netty.util.concurrent.EventExecutor implement EventExecutorGroup

EventExecutor定义的接口如下

方法

说明

boolean inEventLoop()

如果当前线程是这个Executor返回true

boolean inEventLoop(Thread thread)

如果thread是这个Executor的线程返回true

EventExecutorGroup parent()

返回持有这个Executor的EventExecutorGroup

<V> Promise<V> newPromise()

创建一个新的Promise实例

<V> ProgressivePromise<V> newProgressivePromise()

创建一个新的ProgressivePromise实例

<V> Future<V> newSucceededFuture(V result);

创建一个标记为success的Future实例,Future#isSuccess()返回true

<V> Future<V> newFailedFuture(Throwable cause)

创建一个标记为failed的Future实例,Future#isSuccess()返回false

抽象实现AbstractEventExecutorGroup和AbstractEventExecutor

io.netty.util.concurrent.AbstractEventExecutorGroup implement EventExecutorGroup

AbstractEventExecutorGroup实现了EventExecutorGro

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值