【问题标题】:Are concurrent reads possible in Netty 4?在 Netty 4 中可以并发读取吗?
【发布时间】:2014-04-29 21:08:06
【问题描述】:

来自these notes

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

我对此没有意见。但是,我的问题是,是否可以在管道的不同阶段同时从同一通道读取/处理两条不同的消息。

例如,考虑以下管道(仅限ChannelInboundHandlers):

+-----------+ |处理程序 2 | +-----------+ ^ | +-----------+ |处理程序 1 | +-----------+ ^ | +-----------+ | I/O 读取 | +-----------+

我知道最多只有一个线程可能会调用来自Handler 1 的方法,除非它是Sharable。但是,一个线程可以处理Handler 2 中的消息,而另一个线程正在处理Handler 1同一频道 的消息吗?还是只有在当前消息到达管道末端时才选择通道?

【问题讨论】:

    标签: java multithreading netty


    【解决方案1】:

    这只有在您已将其中一个 ChannelHandler 添加到管道并传入 EventExecutorGroup 时才有可能。如果您不使用其中一个,则所有内容都将由 EventLoop 和一个线程处理。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-06-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多