Netty基础1-NIO-三大组件
2021/4/13 10:31:16
本文主要是介绍Netty基础1-NIO-三大组件,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
NIO
NIO(non-blocking io:非阻塞io)
1、三大组件
Channel
-
类似于stream,就是读写数据的双向通道,可以从channel 将数据读入buffer也可以将buffer的数据写入channel,而之前的stream要么是输出,要么是输入,channel比stream更为底层
-
常见的Channel有:FileChanner、DatagramChannel、SocketChannel、ServerSocketChannel
Buffer
-
用来缓冲数据
-
常见的buffer有:
ByteBuffer:MappedByteBuffer、DirectByteBuffer、HaepByteBuffer
ShortBuffer
intBuffer
LongBuffer
FloatBuffer
DoubleBuffer
CharBuffer
Selector:选择器
-
结合服务器的设计演化来理解Selector的用途
-
多线程版的设计
缺点:内存占用高、线程上下文切换成本高、只适合连接数少的场景
-
线程池版
缺点:阻塞模式下,线程仅能处理一个socket连接、仅适合短连接场景(http请求)
-
selector版
selector 的作用就是配合一个线程来管理多个channel,获取这些channel上发生的事情,这些channel哦你工作在非阻塞模式下,不会让线程吊死在一个channel上,适合连接数特别多的,大流量低的场景(low traffic)
调用selector的select()会阻塞知道channel发生了读写就绪事件,这些事件发生,select方法就会返回这些事件交给thread来处理
这篇关于Netty基础1-NIO-三大组件的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-23Java对接阿里云智能语音服务入门教程
- 2024-11-23JAVA对接阿里云智能语音服务入门教程
- 2024-11-23Java副业入门:初学者的简单教程
- 2024-11-23JAVA副业入门:初学者的实战指南
- 2024-11-23JAVA项目部署入门:新手必读指南
- 2024-11-23Java项目部署入门:新手必看指南
- 2024-11-23Java项目部署入门:新手必读指南
- 2024-11-23Java项目开发入门:新手必读指南
- 2024-11-23JAVA项目开发入门:从零开始的实用教程
- 2024-11-23Java项目开发入门:新手必读指南