Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Netty 多通道写入的顺序_Netty - Fatal编程技术网

Netty 多通道写入的顺序

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

我正在读《Netty频道》的Javadoc:

在我的单线程中(在Netty的IO线程之外),如果我多次调用
通道#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);
      }
    });
  }
});