没有合适的资源?快使用搜索试试~ 我知道了~
首页java nio 实现socket
资源详情
资源评论
资源推荐

基于
Java NIO
的
Socket
通信
NIO 介绍
NIO 非堵塞应用通常适用用在 I/O 读写等方面,我们知道,系统运行的性能瓶颈通常在 I/O
读写,包括对端口和文件的操作上,过去,在打开一个 I /O 通道后,read()将一直等待在端
口一边读取字节内容,假如没有内容进来,read()也是傻傻的等,这会影响我们程序继续做
其他事情,那么改进做法就是开设线程,让线程去等待,但是这样做也是相当耗费资源的。
Java NIO 非堵塞技术实际是采取 Reactor 模式,或者说是 Observer 模式为我们监察 I/O 端口
假如有内容进来,会自动通知我们,这样,我们就不必开启多个线程死等,
从外界看,实现了流畅的 I/O 读写,不堵塞了。Java NIO 出现不只是一个技术性能的提高
你会发现网络上到处在介绍它,因为它具有里程碑意义,从 JDK1.4 开始,Java 开始提高性
能相关的功能,从而使得 Java 在底层或者并行分布式计算等操作上已经可以和 C 或 Perl 等
语言并驾齐驱。
2 NIO 主要原理和适用。
NIO 有一个主要的类 Selector,这个类似一个观察者,只要我们把需要探知的 socketchannel
告诉 Selector,我们接着做别的事情,当有事件发生时,他会通知我们,传回一组
SelectionKey,我们读取这些 Key,就会获得我们刚刚注册过的 socketchannel,然后,我们从这
个 Channel 中读取数据,放心,包准能够读到,接着我们可以处理这些数据。Selector 内部
原理实际是在做一个对所注册的 channel 的轮询访问,不断的轮询(目前就这一个算法),一
旦轮询到一个 channel 有所注册的事情发生,比如数据来了,他就会站起来报告,交出一把
钥匙,让我们通过这把钥匙来读取这个 channel 的内容。 2011-03-20 23:40675 人阅读评论(2)收藏举
报
Java NIO 模式的 Socket 通信,是一种同步非阻塞 IO 设计模式,它为 Reactor 模式实现提供了基础。
下面看看,Java 实现的一个服务端和客户端通信的例子。
NIO 模式的基本原理描述如下:
服务端打开一个通道(ServerSocketChannel),并向通道中注册一个选择器(Selector),这个选
择器是与一些感兴趣的操作的标识(SelectionKey,即通过这个标识可以定位到具体的操作,从而
进行响应的处理)相关联的,然后基于选择器(Selector)轮询通道(ServerSocketChannel)上注
册的事件,并进行相应的处理。
客户端在请求与服务端通信时,也可以向服务器端一样注册(比服务端少了一个
SelectionKey.OP_ACCEPT 操作集合),并通过轮询来处理指定的事件,而不必阻塞。















安全验证
文档复制为VIP权益,开通VIP直接复制

评论3