Netty - 我可以在Hash映射中缓存那些ChannelHandlerContext并在以后响应它吗?

时间:2015-03-04 02:15:36

标签: java multithreading netty

以下是实施步骤和问题:

  1. Netty服务器处理程序从客户端

  2. 接收消息
  3. 因为还有其他正在运行的线程来处理用户数据,我们需要将此请求放入队列并让工作进程处理

  4. 在工作者处理数据之后,我们可以在工作线程中回复客户端吗?即使用HashMap缓存ChannelHandlerContext并稍后从工作线程获取响应?

  5. 谢谢大家

1 个答案:

答案 0 :(得分:2)

是的,你可以。 ChannelHandlerContext提供的操作都是线程安全的,因此您可以保留上下文实例供以后使用,并从其他线程使用它。

ChannelHandlerContext与其所属的Channel具有相同的生命周期。当Channel关闭时,ChannelHandlerContext也会从管道中解除引用。如果你保留对ChannelHandlerContext的引用,你应该取消引用它或确保垃圾收集器可以回收它。