Netty 多通道写入的顺序
我正在读《Netty频道》的Javadoc: 在我的单线程中(在Netty的IO线程之外),如果我多次调用Netty 多通道写入的顺序,netty,Netty,我正在读《Netty频道》的Javadoc: 在我的单线程中(在Netty的IO线程之外),如果我多次调用通道#write: channel.write(msg1); channel.write(msg2); channel.write(msg3); Netty是否会确保消息按顺序输出:msg1、msg2、msg3? 或者我必须自己手动确保订单(非常乏味,非常难看) 答案是肯定的 通道是线程安全的,这意味着从不同的位置对其进行操作是安全的 线程。此外,此方法保证消息的写入顺序与传递的顺序相同
通道#write
:
channel.write(msg1);
channel.write(msg2);
channel.write(msg3);
Netty是否会确保消息按顺序输出:msg1、msg2、msg3?
或者我必须自己手动确保订单(非常乏味,非常难看)
答案是肯定的
通道是线程安全的,这意味着从不同的位置对其进行操作是安全的
线程。此外,此方法保证消息的写入顺序与传递的顺序相同
将它们转换为write方法
ChannelFuture f1 = channel.write(msg1);
f1.addListener(new ChannelFutureListener() {
public void operationComplete(ChannelFuture future) {
ChannelFuture f2 = channel.write(msg2);
f2.addListener(new ChannelFutureListener() {
public void operationComplete(ChannelFuture future) {
channel.write(msg3);
}
});
}
});