博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Mina入门:Java NIO基础概念
阅读量:5273 次
发布时间:2019-06-14

本文共 653 字,大约阅读时间需要 2 分钟。

JDK1.4引入了Java NIO API(Java New IO),Java NIO得到了广泛应用。NIO允许程序进行非阻塞IO操作。java.nio.* 包括以下NIO基本结构:

 

  • Buffer - 数据的容器;
  • Chartsets - 针对字节与Unicode的容器转换器;
  • Channels - 代表IO操作的实体连接;
  • Selectors - 提供可选择的、可复用的非阻塞IO;

Java NIO引入了两个新的概念:通道Channel和选择器Selector;

Channels是服务端和客户端进行通信的接口-----原来是直接的IO操作,客户端发信息给服务端,服务端从OutputStream中读取,然后向InputStream中写数据;现在则直接从Channel中读取或写入数据;

Selectors是一个多路复用器:所有的通道向它注册事件,因此它管理了所有的通道信息,并轮询各个通道的状态,一旦某个通道某事件发生(比如有数据读或可以写入数据),则通知该管道对应事件的处理器去处理它;

 

客户端连接上服务端后,首先每个客户端都要与服务端建立一个通道(SocketChannel);然后每个通道向选择器(Selector)注册事件,注册器会轮询查看每个通道是否有事件发生,一旦某通道有事件发生,比如Client1的SocketChannel有数据了,就触发了读就绪事件,可以进行读取的操作啦。

转载于:https://www.cnblogs.com/hyk110988/p/3583099.html

你可能感兴趣的文章
SignalR
查看>>
vue模板语法(上)
查看>>
前端设计的七大法则
查看>>
Centos7搭建FTP服务
查看>>
react 环境搭建
查看>>
PAT——1023. 组个最小数
查看>>
python中的generator, iterator, iterabel
查看>>
Sitecore8.2 Tracker.Current is not initialized错误
查看>>
jQuery数组处理完全详解
查看>>
Unity3D Animation Curve
查看>>
GLSL扩展预处理器(支持#include)
查看>>
double 类型转化为Integer
查看>>
【31.93%】【codeforces 670E】Correct Bracket Sequence Editor
查看>>
mysql优化理解笔记(持续更新)
查看>>
node.js初识04
查看>>
java并发编程(十三)线程间通信中notifyAll造成的早期通知问题
查看>>
POJ 1273 Drainage Ditches 最大流-Dinic
查看>>
Linux服务器centos7系统下搭建Jenkins
查看>>
python爬虫scrapy框架——爬取伯乐在线网站文章
查看>>
混沌与分形
查看>>