netty探索之旅一

   其实一直都在关注NETTY,前面也花了点时间去看过,但是还是觉得对netty还不是很了解,所以还是打算系统的学习一下。并且把学习的过程记录下来,当成后面追溯的地方。以前的学习就是只是看,没有很好的记录,导致不系统不连贯。俗话说:好记性不如烂笔头。

在开始netty探索之旅之前,还是先来回顾一下NIO的知识。

NIO在JDK1.4的时候就已经有了(同步非阻塞IO)。
关于阻塞IO,同步非阻塞IO,异步非阻塞IO,可以参考我其他的博客: http://jishuaige.iteye.com/blog/2355648。里面比较详细的讲解了一下。

这里说一下其他的两个方面:
1:stream和buffer
传统的IO是面向字节流或者是字符流的,而NIO中引入了channel和buffer的概念,在NIO中会读取channel中的数据到buffer中,或者是把buffer中的数据写入到channel中。
在我们熟知的Java IO操作中,是以流的方式顺序从stream中读取一个或者多个字节,因此我们不能随意改变读取指针的位置。在buffer中,当我们从channel中读取数据到buffer中时,我们可以随意读取任意位置的数据。
2:selector:通过selector,一个线程可以监听多个channel的IO事件。一个channel注册到selector后(channel必须是非阻塞的),selector的内部机制就自动的不断查询注册的channel是否有已经就绪的IO事件(读,写,连接事件)。调用selector中的select()方法,这个方法会阻塞,直到channel产生了可读写的事件发生后,select()返回。当前的线程就可以处理事件了。

猜你喜欢

转载自jishuaige.iteye.com/blog/2323651