首页 > JAVA_NIO ,走进JavaNIO的世界

JAVA_NIO ,走进JavaNIO的世界

2019独角兽企业重金招聘Python工程师标准>>> hot3.png



Java NIO: Channels and Buffers//通道和缓冲区

Java NIO: Non-blocking IO//异步IO

 //一个线程可以请求通道读取数据到buffer中,当通道读取数据到buffer中的时候,这个线程依然可以做其它的事情,buffer数据读到channel也是一样的

Java NIO: Selectors

//一个选择器可以对象可以管理多个通道比如 connection opened, data arrived,这样的话 一个线程就可以管理多个通道做一些数据的操作

Channels and Buffers

170248_oHLM_876290.png

主要的实现 buffer的类

    ByteBuffer

    CharBuffer

    DoubleBuffer

    FloatBuffer

    IntBuffer

    LongBuffer

    ShortBuffer



主要的 channel

    FileChannel

    DatagramChannel

    SocketChannel

    ServerSocketChannel



    这些通道可以被用做 UDP + TCP network IO, and file IO

    

    Selectors//适用于低业务量

    170316_qQ6K_876290.png    

    

    A Thread uses a Selector to handle 3 Channel's

    

    一个selector 允许一个线程处理多个通道,假使你有多个连接(channel),但是适用于低业务量,使用selector 注册在通道上  然后调用select()方法,这个方法将会阻塞,直到有一个或者多个注册在通道上的事件返回,

    一旦方法返回,线程便可以处理这些事件,例如incoming connection(链接到来), data received(数据接收)

//未完待续。。。

转载于:https://my.oschina.net/u/876290/blog/367680

更多相关:

  • OpenCV中图像以Mat类型保存时各通道数据在内存中的组织形式及python代码访问各通道数据的简要方式 以最简单的4 x 5三通道图像为例,其在内存中Mat类型的数据组织形式如下:   每一行的每一列像素的三个通道数据组成一个一维数组,一行像素组成一个二维数组,整幅图像组成一个三维数组,即: Mat.data[4, 5...

  • 原文出处: 韩昊    1 2 3 4 5 6 7 8 9 10 作 者:韩 昊 知 乎:Heinrich 微 博:@花生油工人 知乎专栏:与时间无关的故事   谨以此文献给大连海事大学的吴楠老师,柳晓鸣老师,王新年老师以及张晶泊老师。   转载的同学请保留上面这句话,谢谢。如果还能保留文章来源就更感激不尽了。 我保证这篇文章...

  • 原文出处: 韩昊   我保证这篇文章和你以前看过的所有文章都不同,这是 2012 年还在果壳的时候写的,但是当时没有来得及写完就出国了……于是拖了两年,嗯,我是拖延症患者…… 这篇文章的核心思想就是: 要让读者在不看任何数学公式的情况下理解傅里叶分析。 傅里叶分析不仅仅是一个数学工具,更是一种可以彻底颠覆一个人以前世界观的思维...

  • 很多Linux高手都喜欢使用screen命令,screen命令可以使你轻松地使用一个终端控制其他终端。尽管screen本身是一个非常有用的工具,byobu作为screen的增强版本,比screen更加好用而且美观,并且提供有用的信息和快捷的热键。 想象一下这样一个场景:你通过Secure Shell(ssh)链接到一个服务器,并...

  • NarrowbandPrimary Synchronization Signal时域位置每1个SFN存在一个NPSSSFNSubframeSymbol长度每个SFN5最后11个symbol11个symbols频域位置NB-IOT下行带宽固定180kHz,一个PRB,12个子载波。...

  •  [h1]反斜杠只能够阻止一个字符  [h2]位于键盘的左上角,和~公用一个键。...