问题:我写了MyDecoder which extends ByteToMessageDecoder,单线程没问题,但是多线程时,报'the handler should be sharable'。查看ByteToMessageDecoder,发现其不能被@sharable。

解决:

在ChannelInitializer中,要new XxxHandler()

pipeline.addLast(new TelnetServerHandler());

而不能写成员变量,如:

private static final TelnetServerHandler SERVER_HANDLER = new TelnetServerHandler();

因为,ByteToMessageDecoder是有状态的(成员变量),如下:

public abstract class ByteToMessageDecoder extends ChannelInboundHandlerAdapter {

    ByteBuf cumulation;
private boolean singleDecode;
private boolean decodeWasNull;
private boolean first;

最新文章

  1. oracle 查询最近执行过的 SQL语句(转载)
  2. Hibernate —— Hibernate 配置文件
  3. SQL约束
  4. dedecms调用标签总结(一)
  5. ThinkPHP讲解(十二)——文本编辑器和ajax传址
  6. Ubuntu 环境 运行Asp.net mvc +EntityFramework+ Mysql
  7. windows下nginx和php环境的配置
  8. tomcat 系统架构与设计模式 第一部分 系统架构工作原理 转
  9. Javascript高级程序设计读书笔记(第10章 DOM)
  10. opencv 简单、常用的图像处理函数(2)
  11. UV印刷
  12. 合肥.NET技术社区首次线下聚会全程回顾【多图】
  13. jqurey.running.min.js运动的字体效果
  14. 比较ASP.NET和ASP.NET Core[经典 Asp.Net v和 Asp.Net Core (Asp.Net Core MVC)]
  15. Setup Sight Sense
  16. 获取ScrollView ListView的当前位置的百分比
  17. oracle dataguard主从切换
  18. 给你的网站添加 console.js
  19. java持有对象【2】ArrayList容器续解
  20. ADNI以及study design简介

热门文章

  1. 15 个最佳的 jQuery 布局插件【转】
  2. NASNet学习笔记——   核心一:延续NAS论文的核心机制使得能够自动产生网络结构;    核心二:采用resnet和Inception重复使用block结构思想;    核心三:利用迁移学习将生成的网络迁移到大数据集上提出一个new search space。
  3. Go丨语言对数据库操作报错 panic: dial tcp 127.0.0.1:3306: connectex: No connection could be made because the target machine actively refused it.
  4. BZOJ_5338_ [TJOI2018]xor_可持久化trie
  5. Http客户端跳转和服务器端跳转的区别
  6. java 最佳实践
  7. 继承HibernateDaoSupport实现DAO(spring整合hibernate)
  8. Linux 之添加系统环境变量
  9. Excel .net读取
  10. Golang : pflag 包简介