java - EventLoop#submit() vs #execute() vs Channel#writeAndFlush()
问题描述
将字节写入通道时,这 3 种方法有什么区别?
在我的例子中,写入这些字节的线程不是属于通道的 EventLoop 的线程,而且我知道 IO 事件总是发生在通道分配的 EventLoop 线程上。
我试图通过尽快刷新这些字节来最小化延迟。为了更好地理解我可以做些什么来优化它,我需要知道这三种将数据写入通道的方式之间的区别,以及我可能错过的任何其他方式?
byte[] data = ...
Channel channel = ...
// 1
channel.eventLoop().submit(() -> channel.writeAndFlush(data));
// 2
channel.eventLoop().execute(() -> channel.writeAndFlush(data));
// 3
channel.writeAndFlush(data);
解决方案
因此,对于您在这里所做的事情,除了返回值的writeAndFlush
传播方式之外并没有太大的区别。
推荐阅读
- c++ - 复制数组时后端绑定
- javascript - 如何使用 JavaScript 在 Jest 中模拟服务?
- android - 无法使用相机插件 cordova-plugin-camera 安装问题
- node.js - Heroku 应用部署拒绝构建 CSS 文件
- ios - 我可以检测到 iOS 设备连接了外部 GPS 吗?
- elasticsearch - ElasticSearch - 我应该按分区分片吗?
- kotlin - 大家好,有人可以向我解释一下引用和引用对象之间的区别吗?
- html - 为什么我的第一个 div 在窗口外?
- python-3.x - 有什么办法可以初始化一个变量,当我们写if的条件,然后比较
- javascript - 在 .map() 中使用 .map() 返回噩梦