网络i/o编程3 NIO

Posted 健康平安的活着

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了网络i/o编程3 NIO相关的知识,希望对你有一定的参考价值。

一 NIO

1.1 介绍

1.NIO:为同步非阻塞。位于java的 java.nio.*包下,NIO三大核心部分:

  1. Channel 通道
  2. Buffer 缓冲区:底层使用Unsafe类直接操作内存,Buffer中写入的所有数据jvm都不进行管理,不能被gc回收。
  3. Selector 选择器

2.NIO是面向缓冲区的。当数据读取到一个它稍后处理的缓冲区,需要时可在缓存区中前后移动,这就增加了处理过程中的灵活性,使用它可以提供非阻塞式的高伸缩性网络。

3.通俗讲NIO的同步非阻塞:NIO是可以做到用一个线程来处理多个操作的,假设有10000个请求过来,根据实际情况,可以分配50个或者100个线程来处理,不像之前的阻塞IO那样,非得1000个。

其中http2.0采用多路复用技术,做到同一个连接并发处理多个请求,而且并发请求的数量比http1.1大了好多个数量级。

1.2 Buffer的简单操作案例

package com.ljf.netty.nio;

import java.nio.IntBuffer;

/**
 * @ClassName: BufferDemo
 * @Description: TODO
 * @Author: liujianfu
 * @Date: 2022/05/12 22:37:50
 * @Version: V1.0
 **/
public class BufferDemo 
    public static void main(String[] args) 
        IntBuffer  intBuffer=IntBuffer.allocate(5);
        for(int k=0;k<intBuffer.capacity();k++)
            intBuffer.put(k*30);
        
        //读取数据,将写切换成读模式
        intBuffer.flip();
        while(intBuffer.hasRemaining())
            System.out.println("读取:"+intBuffer.get());
        
    

结果:

1.3 flip()方法的作用

创作打卡挑战赛 赢取流量/现金/CSDN周边激励大奖

以上是关于网络i/o编程3 NIO的主要内容,如果未能解决你的问题,请参考以下文章

Netty学习系列-- NIO介绍

网络I/o编程模型4 NIo之chanel通道实现文件复制

网络I/o编程模型6 Nio之Selector以及NIO客户服务通讯

网络I/o编程模型7 Nio实现聊天室

网络I/o编程模型5 Nio之buffer的操作和常用方法

一站式学习Java网络编程 全面理解BIO/NIO/AIO