Java nio系列之一
来源:互联网 发布:北京淘宝网店老师 编辑:程序博客网 时间:2024/06/07 06:30
Selector
Selector允许单线程处理多个 Channel。如果你的应用打开了多个连接(通道),但每个连接的流量都很低,使用Selector就会很方便。例如,在一个聊天服务器中。
这是在一个单线程中使用一个Selector处理3个Channel的图示:
要使用Selector,得向Selector注册Channel,然后调用它的select()方法。这个方法会一直阻塞到某个注册的通道有事件就绪。一旦这个方法返回,线程就可以处理这些事件,事件的例子有如新连接进来,数据接收等。
Java NIO的通道类似流,但又有些不同:
- 既可以从通道中读取数据,又可以写数据到通道。但流的读写通常是单向的。
- 通道可以异步地读写。
- 通道中的数据总是要先读到一个Buffer,或者总是要从一个Buffer中写入。
Channel的实现
这些是Java NIO中最重要的通道的实现:
- FileChannel
- DatagramChannel
- SocketChannel
- ServerSocketChannel
FileChannel 从文件中读写数据。
DatagramChannel 能通过UDP读写网络中的数据。
SocketChannel 能通过TCP读写网络中的数据。
ServerSocketChannel可以监听新进来的TCP连接,像Web服务器那样。对每一个新进来的连接都会创建一个SocketChannel。
原文:http://ifeve.com/overview/
0 0
- Java nio系列之一
- java nio 系列学习之一
- Java NIO技术学习之一
- Java NIO系列教程
- Java NIO系列教程
- Java NIO系列
- Java NIO 系列教程
- Java NIO 系列教程
- Java NIO 系列教程
- Java NIO 系列教程
- Java NIO 系列教程
- java nio系列教程
- Java NIO 系列教程
- Java NIO 系列教程
- Java NIO 系列教程
- Java NIO 系列教程
- Java NIO 系列教程
- Java NIO 系列教程
- handfree调试出现错误config file can't be opened, check your system
- Unicode和UTF的联系与区别
- [LeetCode刷题笔记]Math数学类型题目(三)特殊的数字结构
- LoadRunner_virtual user generation 录制脚本时发生的错误及解决方案
- Service的理解和使用
- Java nio系列之一
- 设置对话框位置,设置对话框透明度等
- 欢迎使用CSDN-markdown编辑器
- 网上的写法都什么辣鸡bzoj4004
- TextView 设置行高并垂直居中
- 冷却算法综合排名改进模型-R实现代码
- 找出缺失的整数
- web前端css简单
- 关于Android Studio里的Gradle