11 2023 档案
用Netty实现一个简单全双工通信
摘要:用Netty实现一个简单全双工通信 如题,需要注意在ByteBuf使用的过程中要使用buf.retain()保证buf引用计数大于0,才能够正常使用否则会报异常,原因是pipeline上的handler都是使用NIO线程执行的,因此使用buf的handler和tail handler(最后调用b
Netty(四)NIO多线程优化
摘要:Netty(四)NIO多线程优化 前面的代码都只有一个选择器,没有充分利用多核CPU,因此可以分两组选择器 boss:单线程配一个选择器,专门处理accept事件,不负责数据的读写 worker:创建CPU核心数的线程,每个线程配一个选择器,轮流处理read事件 1 多线程问题分析 关键是这一部
Netty(三)网络编程
摘要:Netty(三)网络编程 1 阻塞和非阻塞 堵塞: 在没有数据可读的时候,包括数据复制的过程,线程必须堵塞等待,不会占用CPU但是线程相当于闲置 在单线程下,两个堵塞的方法会相互影响,必须使用多线程,32位JVM一个线程320K,64位JVM一个线程1024K,为了减少线程数,需要采用线程池技术 但
Netty(二)文件编程
摘要:Netty(二)文件编程 1 FileChannel 不能够直接打开FileChannel,只能够通过FileInputStream、FIleOutPutStream和RandomAccessFile的getChannel()方法来获取FileChannel FileInputStream获得的ch