netty4中ChannelHandlerContext.executor()和Channel.eventLoop()有什么区别?

时间:2017-03-05 13:10:16

标签: netty

netty4中ChannelHandlerContext.executor()Channel.eventLoop()之间有什么区别?

当我想在处理程序中运行一个应该使用的任务时?

ctx.executor().submit(task);
ctx.channel().eventLoop().submit(task);

1 个答案:

答案 0 :(得分:2)

一般来说,这是一样的。这取决于你选择什么方法。您还可以查看AbstractChannelHandlerContext.executor()方法并找到该上下文重复通道代码:

public EventExecutor executor() {
    if (executor == null) {
        return channel().eventLoop();
    } else {
        return executor;
    }
}

但是,netty允许您为不同的EventExecutors在同一管道中分配处理程序。在那种情况下,频道和上下文的返回结果可能不同。但是提交任务并不是什么大问题。