EventLoop#submit() vs #execute() vs Channel#writeAndFlush()
EventLoop#submit() vs #execute() vs Channel#writeAndFlush()
向通道写入字节时,这 3 种方法有什么区别?
在我的例子中,写入这些字节的线程不是属于通道的 EventLoop 的线程,而且我知道 IO 事件总是发生在分配给通道的 EventLoop 线程上。
我正在尝试通过尽快刷新这些字节来最大程度地减少延迟。
为了更好地理解我可以做些什么来优化它,我需要知道这 3 种将数据写入通道的方式之间的区别,以及我可能错过的任何其他方式?
byte[] data = ...
Channel channel = ...
// 1
channel.eventLoop().submit(() -> channel.writeAndFlush(data));
// 2
channel.eventLoop().execute(() -> channel.writeAndFlush(data));
// 3
channel.writeAndFlush(data);
因此,对于您在这里所做的事情,除了传播 writeAndFlush
的 return 值的方式外,并没有太大区别。
向通道写入字节时,这 3 种方法有什么区别?
在我的例子中,写入这些字节的线程不是属于通道的 EventLoop 的线程,而且我知道 IO 事件总是发生在分配给通道的 EventLoop 线程上。
我正在尝试通过尽快刷新这些字节来最大程度地减少延迟。 为了更好地理解我可以做些什么来优化它,我需要知道这 3 种将数据写入通道的方式之间的区别,以及我可能错过的任何其他方式?
byte[] data = ...
Channel channel = ...
// 1
channel.eventLoop().submit(() -> channel.writeAndFlush(data));
// 2
channel.eventLoop().execute(() -> channel.writeAndFlush(data));
// 3
channel.writeAndFlush(data);
因此,对于您在这里所做的事情,除了传播 writeAndFlush
的 return 值的方式外,并没有太大区别。