NIO简单理解(一,NIO服务端简单实现逻辑)
来源:互联网 发布:手机验证码软件 编辑:程序博客网 时间:2024/05/18 03:05
熟悉NIO,首先要理解NIO核心对象
ServerSocketChannel
Selector:是一个多路开关选择器,可以同时检查(如果需要,也可以等待)一组信道的I/O状态,能够管理多个信道上的I/O操作。
简单NIO服务端为例实现逻辑:
创建Selector(多路开关选择器或者通道管理器),
(干的事就是收集请求,分发任务)。
需要下列连个核心对象
ServerSocketChannel: 通信信道
SelectionKey:对应信道上匹配并可以处理的哪种事件(包含四种枚举事件)
Selector实例对象设置: (规定好要监听报告的事件,这个只监听新连接事件)
1 开启一个服务端的信道:
ServerSocketChannel ssc = ServerSocketChannel.open();
2 绑定socket端口ssc.socket().bind
3 注册绑定Selector 到信道,将Selector实例(Selector.open()获取)注册(register 1:n)到想要监控的信道上
serverSocketChannel.register(connectionBell.getSelector(), SelectionKey.OP_ACCEPT);
(注意, 这要通过channel的方法实现,而不是使用selector的方法)
4 开启Selector监控连接专用线程(内部while(true)自旋)
new Thread(connectionBell).start();
5 专用线程内部可以做的事:
服务端Selector实例内核轮询 获取信道事件,this.selector.select();该方法阻塞等待或者超时
通过信道事件找到对应信道,获取该信道及客户端请求信息
ServerSocketChannel ssc = (ServerSocketChannel) key.channel();
开启多线程:dispatch分发处理请求
6 客户端NIO序列图
7 服务端NIO序列图
- NIO简单理解(一,NIO服务端简单实现逻辑)
- 简单理解NIO
- JAVA NIO实现服务端与客户端简单数据传输 JAVA NIO 之一
- NIO学习之Selector,SelectionKey与客户端与服务端通信简单实现(1)
- Java NIO(一) 初步理解NIO
- Java NIO 实现简单代理
- nio简单demo,帮助理解io与nio区别
- NIO(一)基础理解
- NIO简单理解(二,传统IO与NIO模型粗析)
- Java BIO, NIO, AIO 简单理解
- Java NIO 的简单读写 以及理解
- Java review--NIO实例:实现服务端和客户端的简单通信
- NIO实现的简单的客户端与服务端通信(非阻塞)
- Java NIO实现简单聊天室(GUI版)
- 使用nio实现简单的httpServer
- JAVA NIO 服务器端简单实现例子
- JAVA BIO和NIO及简单实现
- NIO 简单http 服务器
- JavaScript中的深拷贝与浅拷贝
- View学习(二)--角度与弧度
- 安装darknet+opencv+错误解决
- InverseTransformPoint使用
- 1667: 好老师
- NIO简单理解(一,NIO服务端简单实现逻辑)
- 如何优化深度神经网络
- 关于数据库‘状态’字段设计的思考与实践
- 做了一个进度条
- hdu 6143
- 动态内存分配
- cent os 7 下安装tensorflow
- unity 各个平台下运行使用
- redis必杀高级:客户端连接