java nio 大白话描述

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java nio 大白话描述相关的知识,希望对你有一定的参考价值。


java nio基本上常用的组件,selector,channel,buffer。这三个,其他的可以用到的时候再去参考就可以了。


看一本书的时候,基本看前三章或者四章基础知识,剩下的,实际生产中用到了再去看就可以。


大白话解释这三个重要的单词

Channel:

Java的nio中,channel其实是用于传输的,也可以说是管道,是一个工具,可以对比一下io中的流,很类似。但是io中的流都是单向的,但是channel通道是双向的,就是这个通道里既可以读,也可以往里面写。这个channel跟buffer打交道是比较多的,再用nio的时候,读取数据是channel把数据读取到buffer,然后应用再从buffer中读取数据。写数据则是应用程序先把数据写入到buffer中,然后chanel把数据写入到io设备中,就是这样的交互过程


buffer:

buffer常用作解释成缓冲区,再介绍channel的时候,说过数据都是在缓冲区中的,读取数据的是把数据先读到buffer中,然后再从buffer中读数据。nio中的库都是这么操作数据的,并不是再channel中读写数据。缓冲区中有三个重要的状态:position,limit,capacity,再接下来的篇幅中介绍,这里就不多介绍了。


selector

常用作解释成选择器,我把它解释成监听器,用来监听一个或者多个通道,通道可以把自己感兴趣的操作注册到selector上,比如read,write,connect,accept,然后selector负责监听。它是用单线程来处理这些操作的,单线程有单线程的好处,好处就是可以避免多线程之间的线程切换,这样开会会很大。基本一句话说明这个selector是用来管理多个通道的。



欢迎老司机指正,提出更好的讲述和见解。


本文出自 “不积跬步无以至千里” 博客,请务必保留此出处http://shangdc.blog.51cto.com/10093778/1955793

以上是关于java nio 大白话描述的主要内容,如果未能解决你的问题,请参考以下文章

通俗编程——白话NIO之Buffer

Java I/O:NIO中的Buffer

java.nio的描述

大白话系列深入浅出Cleaner+虚引用完成堆外内存的回收

Java Nio 十Java NIO Files

Java:NIO 和 NIO.2 到底有啥区别?