RejectedExecutionHandlers
netty中的执行器拒绝处理器RejectedExecutionHandler接口如下:

其有两种策略实现:
1. 默认策略
实现中是直接抛出异常。

2. 补偿策略
首先判断是否在eventLoop的io线程中。
a. 如果在其中则直接抛出异常,防止补偿阻塞IO线程正常执行任务。
b. 如果不是,则首先尝试wakeup执行器,尽量让其消费queue中的任务。然后阻塞等待指定时间后,调用offerTask将任务再次尝试添加到执行器中,成功则立刻返回,否则走入下一步抛出异常。

网友评论