多个频道#写入的顺序

时间:2014-02-10 03:38:04

标签: netty

我正在阅读Netty频道的Javadoc:http://netty.io/4.0/api/io/netty/channel/Channel.html

在我的单线程中(在Netty的IO线程之外),如果我多次拨打Channel#write

channel.write(msg1);
channel.write(msg2);
channel.write(msg3);

Netty会确保按顺序输出消息:msg1,msg2,msg3? 或者我必须自己手动确保订单(非常乏味,非常难看)?

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);
      }
    });
  }
});

1 个答案:

答案 0 :(得分:2)

答案是肯定的

频道是线程安全的,这意味着可以安全地对其进行操作 线程。此外,此方法可确保以与传递的顺序相同的顺序写入消息 他们写的方法