问题消息释放

问题消息释放

public class MessageTask4Response implements Runnable {

   private MessageModule.Message message;
   private ChannelHandlerContext ctx;
   
   public MessageTask4Response(MessageModule.Message message, ChannelHandlerContext ctx) {
      this.message = message;
      this.ctx = ctx;
   }
   
   @Override
   public void run() {
      try {
         // user-return
         String module = this.message.getModule();
         // save-return
         String cmd = this.message.getCmd();
         // 响应的结果
         ResultType resultType = this.message.getResultType();
         // 响应的内容
         byte[] data = this.message.getBody().toByteArray();
         
         Invoker invoker = InvokerTable.getInvoker(module, cmd);
         invoker.invoke(resultType, data);  
         
      } finally {
         ReferenceCountUtil.release(message);
      }
   }

}


为什么 

MessageTask4Response 

需要

finally {
         ReferenceCountUtil.release(message);
      }

MessageTask4Request

却没有


正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
阿神 2021-06-10 10:52:05

一般来说, 请求的一端(客户端)需要进行释放, 而响应端(服务端)一般都是要把结果写回给客户端的,在调用writeandflush方法时候会自动进行释放资源,所以不需要再次释放啦

问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师