netty学习(5)--NIO基础知识

   NIO是new io的简称,但是nio类库的目标就是让Java支持非阻塞I/O,所以NIO也被解释为非阻塞IO(Non-block I/O)。

与Socket和ServerSocket类相对应,NIO也提供了SocketChannel和ServerSocketChannel两种不同的套接字通道实现,

这两种新增的通道支持阻塞和非阻塞两种形式。阻塞模式使用简单,但是性能和可靠性不好,非阻塞模式和阻塞模式正

好相反,使用复杂,三十性能和可靠性比较完善。开发人员根据需求自行选择!!

    一般情况下:

       低负载、低并发的应用可以选择同步阻塞IO,降低编程复杂度

        高负载,高并发的应用需要选择NIO来提高性能和可靠性。

        NIO弥补了原来同步阻塞IO的不足,在JAVA中提供了高速的,面向块的IO,以块的形式处理数据,提高传输效率

NIO的相关概念:

     缓冲区Buffer

           在NIO中,所有的数据搜时用缓冲区处理的,在读取数据时,它是直接读取到缓冲区中的,在写入数据时,写入到

缓冲区,任何时候访问NIO中的数据,都是通过缓冲区提供对数据的结构化访问以及读写位置(limit)等信息

           NIO中的缓冲区有:

            ByteBuffer : 字节缓冲区

            CharBuffer:字符缓冲区

            ShortBuffer : 短整形缓冲区

            IntBuffer:整形缓冲区

            LongBuffer : 长整形缓冲区

            FloatBuffer:浮点型缓冲区

            DoubleBuffer:双精度浮点型缓冲区


      通道Channel

         Channel是一个通道,可以通过它读取和写入数据,它就像自来水管一样。网络通过Channel读取和写入,通道是

双向的,流只是一个方向上的,而且通道可以用于读、写或者同时用于读写。

       Channel分为两大类:分别是用于网络读写的SelectableChannel和用于文件操作的FileChannel。

        ServerSocketChannel和SocketChannel都是SelectableCHannel的子类!!


       多路复用器Selector

             多路复用器Selector是java nio的编程基础,多路复用器提供选择已经就绪的任务的能力。通俗来说就是:Selector

会不断的轮询注册在其上的Channel,如果某个Channel上面有新的TCP连接接入、读写事件,这个Channel就处于就绪状态

,会被Selector轮询出来,然后通过SelectionKey可以获取就绪的Channel的集合,进行后续操作!!!

            注:一个多路复用器Selector可以同时轮询多个Channel

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值