首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

Java nio 基础概念札记

2013-01-20 
Java nio 基础概念笔记?Channel:ServerSocketChannel 创建服务器端Socket,监听某特定端口,接收客户端请求。

Java nio 基础概念笔记

?

Channel:

ServerSocketChannel 创建服务器端Socket,监听某特定端口,接收客户端请求。

SocketChannel 用于描述在一个客户端连接,既可以是发起请求的客户端本身的连接,也可以在表示该请求在服务器端与之对应的SocketChannel连接对象。几乎所有的数据读写操作都在这个类中完成。可以有block和nonblock两种方式。

?

?

ByteBuffer:

ByteBuffer分为两种,一种为direct,一种为Nondirect. 使用direct buffer时JVM会分配一个连续的内存块,直接通过native access mothed进行读写操作。而nondirect buffer时,JVM通过数组访问的方式来访问其中数据。在Channel对Buffer进行操作时,最终只操作direct buffer。如果Channel接收到的是一个nondirect buffer,它会创建一个direct buffer,然后将nondirect buffer中的数据拷贝到这个direct buffer中,然后调用系统方法进行读写。


Selector:Selector 用于管理Channel,通过select轮循注册在该Selector上的所有Channel,并负责dispatch事件。Selector扮演了Reactor的角色。每个SelectableChannel向Selector注册感兴趣的事件,当事件发生时,Selector记录并跟踪这些事件。当应用程序调用Selector的select方法时,Selector轮循所有注册过的SelectableChannels,查看是否有它们感兴趣的事件发生。 一个SelectableChannel可以向不同的Selector中注册不同的事件。每种类型的SelectableChannel所能注册的事件也不一样。各Channel能注册的事件如下表:ServerSocketChannelOP_ACCEPTSocketChannelOP_CONNECT, OP_READ, OP_WRITEDatagramChannelOP_READ, OP_WRITEPipe.SourceChannelOP_READPipe.SinkChannelOP_WRITE
channel和selector的主要类结构图:
Java nio 基础概念札记
?
Java nio 基础概念札记
?

热点排行