Java NIO框架Netty教程(六) Java NIO Selector模式

此页面是否是列表页或首页?未找到合适正文内容。

Java NIO框架Netty教程(六) Java NIO Selector模式

标签:www.开源工具selectblenec.netapiremovecode

看到标题,您可能觉得,这跟Netty有什么关系呢?确实,如果你完全是使用Netty的,那么可能你可以完全不需要了解Selector。但是,不得不提的是,Netty底层关于NIO的实现也是基于Java的Selector的,是对Selector的封装。所以,我个人认为理解好Selector对于使用和理解Netty都是很多有帮助的。当然,如果您确实不关心这些,只想会用Netty就可以了。那么下文,您可以略过:)

笔者对于Selector也是新上手学习的。之前很多新人跟我交流,都会提到一个新框架或者一个新开源工具的使用和上手的问题。他们会觉得上手困难,耗费事件。不过笔者,从来没有此种感觉。这里正好,借用Selector的学习过程,跟大家交流一下,我上手的过程www.it165.net。想要使用一个工具,自然是先了解其定位,解决问题的原理或者工作流程。所以,笔者先从网上了解了一下Selector大概的工作流程。NIO 有一个主要的类Selector,这个类似一个观察者,只要我们把需要探知的socketchannel告诉Selector,我们接着做别的事情,当有事件发生时,他会通知我们,传回一组SelectionKey,我们读取这些Key,就会获得我们刚刚注册过的socketchannel,然后,我们从这个Channel中读取数据,放心,包准能够读到,接着我们可以处理这些数据。这是笔者摘录的一小段总结,就这一小段基本已经可以说明问题了。接下来,我们要考虑的就是,要实现这个过程,我们需要做什么?顺着描述,我们可以想象,需要选择器,需要消息传送的通道,需要注册一个事件,用于识别。通道自然需要绑定到一个地址。有了这样大概的想法,我们就可以去API里找相关的接口。

Selector服务端样例代码:

view sourceprint?

01./**
02.* Java NIO Select模式服务端样例代码
03.*
04.* @author lihzh
05.* @alia>06.* @Bloghttp://www.it165.net
07.* @date 2012-7-16 下午9:22:53
08.*/
09.publicclassNioSelectorServer {
10.
11./**
12.* @author lihzh
13.* @throws IOException
14.* @alia>15.* @date 2012-7-16 下午9:22:53
16.*/
17.publicstaticvoidmain(String[] args)throwsIOException {
18.// 创建一个selector选择器
19.

作者: liuzhihao

为您推荐

返回顶部