在mina2中,如果在代码中使用了dfcb.addLast("executor", new ExecutorFilter(Executors.newCachedThreadPool()));拦截器,并且开了很多的客户端测试,发现后台的pool-3-thread线程会很多,有时候这个线程过多会出现内存溢出了说不能创建新的线程,最后会把客户端关闭了一部分或者自己停了;如果不加这个拦截器发现后天的NioProcessor会随着时间的增加阻塞总数也不断变大,不知道最后会不会回崩掉?mina2的线程到底该如何设置啊,网上也看了很多资料也了解了上面两种方式配与不配的区别。说一下我的业务:1、接收客户端数据,2、解析数据3、数据入库
2条回答 默认 最新
- scriptguy 2014-04-29 09:10关注
回答一下问题:
如果不加这个拦截器发现后天的NioProcessor会随着时间的增加阻塞总数也不断变大,不知道最后会不会回崩掉?不加拦截器的话,接收客户端数据与业务处理均在IoProcessor引用的线程池里处理,可能会产生阻塞,客户端延迟严重,最终会导致工作队列不断累积,内存不断增长
解决办法:
通用的做法是修改dfcb.addLast("executor", new ExecutorFilter(Executors.newCachedThreadPool()));
将cachedThreadPool修改为有上限的线程池,防止线程无限增长。
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥15 51寻迹小车定点寻迹
- ¥15 谁能帮我看看这拒稿理由啥意思啊阿啊
- ¥15 关于vue2中methods使用call修改this指向的问题
- ¥15 idea自动补全键位冲突
- ¥15 请教一下写代码,代码好难
- ¥15 iis10中如何阻止别人网站重定向到我的网站
- ¥15 滑块验证码移动速度不一致问题
- ¥15 Utunbu中vscode下cern root工作台中写的程序root的头文件无法包含
- ¥15 麒麟V10桌面版SP1如何配置bonding
- ¥15 Marscode IDE 如何预览新建的 HTML 文件