1.Java NIO 基本介绍
1) Java NIO 全称 java non-blocking IO, 是指 JDK 提供的新 API。 从 JDK1.4 开始, Java 提供了一系列改进的
输入/输出的新特性, 被统称为 NIO(New IO), 是同步非阻塞的.
2) NIO 相关类都被放在 java.nio 包及子包下, 并且对原 java.io 包中的很多类进行改写。
3) NIO 有三大核心部分: Channel(通道)Buffer(缓冲区), Selector(选择器)
4) NIO 是 面向缓冲区 , 或者面向 块 编程的。 数据读取到一个它稍后处理的缓冲区, 需要时可在缓冲区中前后
移动, 这就增加了处理过程中的灵活性, 使用它可以提供非阻塞式的高伸缩性网络
5) Java NIO 的非阻塞模式, 使一个线程从某通道发送请求或者读取数据, 但是它仅能得到目前可用的数据, 如果
目前没有数据可用时, 就什么都不会获取, 而不是保持线程阻塞, 所以直至数据变的可以读取之前, 该线程可
以继续做其他的事情。 非阻塞写也是如此, 一个线程请求写入一些数据到某通道, 但不需要等待它完全写入,
这个线程同时可以去做别的事情
6) 通俗理解: NIO 是可以做到用一个线程来处理多个操作的。 假设有 10000 个请求过来,根据实际情况, 可以分配
50 或者 100 个线程来处理。 不像之前的阻塞 IO 那样, 非得分配 10000 个。
7) HTTP2.0 使用了多路复用的技术, 做到同一个连接并发处理多个请求, 而且并发请求的数量比 HTTP1.1 大了好
几个数量级
8) 案例说明 NIO Buffer

import java.nio.IntBuffer;

public class BasicBuffer {
public static void main(String[] args) {
//举例说明 Buffer 的使用 (简单说明)
//创建一个 Buffer, 大小为 5, 即可以存放 5 个 int
IntBuffer intBuffer = IntBuffer.allocate(5);
//向 buffer 存放数据
// intBuffer.put(10);
// intBuffer.put(11);
// intBuffer.put(12);
// intBuffer.put(13);
// intBuffer.put(14);
for(int i = 0; i < intBuffer.capacity(); i++) {
intBuffer.put( i * 2);
} //
如何从 buffer 读取数据
//将 buffer 转换, 读写切换(!!!)
intBuffer.flip();
while (intBuffer.hasRemaining()) {
System.out.println(intBuffer.get());
}
}
View Code

相关文章:

  • 2021-10-27
  • 2021-09-23
  • 2022-01-11
  • 2022-12-23
  • 2021-11-29
  • 2021-08-03
  • 2021-09-14
  • 2022-01-16
猜你喜欢
  • 2021-07-21
  • 2022-12-23
  • 2021-10-26
  • 2021-08-18
  • 2021-05-24
  • 2021-11-13
相关资源
相似解决方案