利用NIO和线程池极大提升网管通讯模块的消息吞吐量

传统模式:
利用NIO和线程池极大提升网管通讯模块的消息吞吐量


NIO + 线程池模式:
利用NIO和线程池极大提升网管通讯模块的消息吞吐量

优势:
1、 减少了接收的线程数。
2、 利用线程池技术控制了处理线程的数量。
3、 从测试数据来看,消息的吞吐量是极大的提升,从原来的1000条/秒提升到现在的10W条/秒。

注意点:
1、 线程池技术时,要自己写许多代码来控制并发安全。
2、 NIO有一些BUG,列举如下:
          1、 socketchannel.close()有时候关不掉socket,需要多次关闭
          2、 selector在注销和注册监听时,有时候不能立刻反映到程序中,需要自己在程序中适时的wakeup一下。


应裴小星的要求,把我以前写的一个用nio收发消息的demo传上来(见src.zip):入口程序:com.talent.NioClient(直接运行这个类就可以了)

你可能感兴趣的:(jdk,socket)