TaskQueue 任务队列
任务队列中的Task有三种典型使用场景
- 用户程序自定义的普通任务 [举例说明]
- 用户自定义定时任务
- 非当前Reactor线程调用Channel的各种方法
-
- 例如在推送系统的业务线程里面, 根据用户的标识, 找到对应的Channel引用,然后调用Write类方法向该用户推送消息, 就会进入到该场景,最终的write会提交到任务队列中后被异步消费
问题
如果在读取或者操作时碰到非常耗时的业务, 那么他就会阻塞
本文介绍了Netty中TaskQueue任务队列的设计,针对用户自定义的普通任务和定时任务提供了解决方案。在处理耗时业务时,避免阻塞事件循环,将任务提交到NioEventLoop的taskQueue中异步执行。实验表明,普通任务与定时任务并存时,执行时间按各自设定的时间依次完成。Netty的NioEventLoopGroup包含多个串行化的NioEventLoop,每个EventLoop拥有一个Selector和TaskQueue,确保高效地处理网络读写操作。
任务队列中的Task有三种典型使用场景
如果在读取或者操作时碰到非常耗时的业务, 那么他就会阻塞
953
1385

被折叠的 条评论
为什么被折叠?