网络i/o编程3 NIO
Posted 健康平安的活着
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了网络i/o编程3 NIO相关的知识,希望对你有一定的参考价值。
一 NIO
1.1 介绍
1.NIO:为同步非阻塞。位于java的 java.nio.*包下,NIO三大核心部分:
- Channel 通道
- Buffer 缓冲区:底层使用Unsafe类直接操作内存,Buffer中写入的所有数据jvm都不进行管理,不能被gc回收。
- 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的主要内容,如果未能解决你的问题,请参考以下文章