TaskQueue 任务队列
任务队列中的Task有三种典型使用场景
用户程序自定义的普通任务 [举例说明]
用户自定义定时任务
非当前Reactor线程调用Channel的各种方法
例如在推送系统的业务线程里面..., 根据用户的标识, 找到对应的Channel引用,然后调用Write类方法向该用户推送消息, 就会进入到该场景,最终的write会提交到任务队列中后被异步消费
问题
如果在读取或者操作时碰到非常耗时的业务...测试可以,这样的话,ChannelRead事件不会阻塞,并且任务是在10秒后返回的
但是这里如果是多任务那么时间是累加的
// 应为是任务队列所以第一个任务返回是延迟10秒
ctx.channel()...{
e.printStackTrace();
System.out.println("发生异常");
}
}
});
用户自定义定时任务...经过测试一个普通任务10秒,一个定时任务5秒+执行10秒, 总共会在20秒执行完成,在10秒返回一个, 在20秒返回一个
预测普通任务和延时任务同时开始, 普通任务开始执行,延时任务开始倒计时,在延时任务倒计时