在Netty 4中是否可以进行并发读取?

时间:2014-04-29 21:08:07

标签: java multithreading netty

来自these notes

  

除非ChannelHandler注明ChannelHandler,否则Netty永远不会同时调用@Sharable方法。这与处理程序方法的类型无关 - 入站,出站或生命周期事件处理程序方法。

我没有问题。然而,我的问题是,是否有可能在同一时间,在管道的不同阶段从同一个频道读取/处理两个不同的消息。

例如,请考虑以下管道(仅ChannelInboundHandler):

+-----------+
| Handler 2 |
+-----------+
      ^
      |
+-----------+
| Handler 1 |
+-----------+
      ^
      |
+-----------+
| I/O read  |
+-----------+

据我所知,除了Handler 1之外,最多只有一个线程可能会调用Sharable中的方法。但是,一个线程是否可以在Handler 2中处理消息,而另一个线程正在处理Handler 1中同一频道的消息?或者仅当当前消息到达管道末尾时才选择通道?

1 个答案:

答案 0 :(得分:1)

只有在传入了EventExecutorGroup的情况下将ChannelHandler中的一个添加到管道中时才可以这样做。如果你没有使用其中一个,那么一切都将由EventLoop和一个Thread处理。