![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
I/O
文章平均质量分 65
十分之九加九分之一
互相学习,洒洒水啦
展开
-
NIO三大核心:(缓冲区)Buffer、(通道)Channel、(选择器)Selector
缓冲区(Buffer) 一个用于特定基本数据类型的容器。由 java.nio 包定义的,所有缓冲区都是 Buffer 抽象类的子类。Java NIO 中的 Buffer 主要用于与 NIO 通道进行 交互,数据是从通道读入缓冲区,从缓冲区写入通道中的。 Buffer 类及其子类 Buffer 就像一个数组,可以保存多个相同类型的数据。根 据数据类型不同 ,有以下 Buffer 常用子类: ByteBuffer CharBuffer ShortBuffer IntBuffer LongBuffer原创 2021-07-02 21:46:25 · 545 阅读 · 1 评论 -
Java NIO 基本介绍与三大核心
Java NIO 基本介绍 Java NIO(New IO)也有人称之为 java non-blocking IO,它是从Java 1.4版本开始引入的一个新的IO API,可以替代标准的Java IO API。NIO与原来的IO有同样的作用和目的,但是使用的方式完全不同,NIO支持面向缓冲区、基于通道的IO操作。NIO将以更加高效的方式进行文件的读写操作。NIO可以理解为非阻塞IO,传统的IO的read和write只能阻塞执行,线程在读写IO期间不能干其他事情,比如调用socket.read()时,如原创 2021-07-02 15:30:08 · 429 阅读 · 0 评论 -
基于BIO形式下的文件传输
目标:支持任意类型文件形式的上传 客户端实现 public class Client { public static void main(String[] args) { try ( InputStream is = new FileInputStream("D:\\文件\\java.png"); ) { // 1、请求与服务端的Socket链接 Socket socket = ne.原创 2021-07-02 14:52:57 · 186 阅读 · 0 评论 -
BIO的伪异步编程
BIO的伪异步编程 在BIO中:客户端的并发访问增加时。服务端将呈现1:1的线程开销,访问量越大,系统将发生线程栈溢出,线程创建失败,最终导致进程宕机或者僵死,从而不能对外提供服务。 接下来我们采用一个伪异步I/O的通信框架,采用线程池和任务队列实现,当客户端接入时,将客户端的Socket封装成一个Task(该任务实现java.lang.Runnable线程任务接口)交给后端的线程池中进行处理。JDK的线程池维护一个消息队列和N个活跃的线程,对消息队列中Socket任务进行处理,由于线程池可以原创 2021-07-02 14:39:48 · 185 阅读 · 1 评论 -
Java I/O的3种模型简要说明
I/O 模型基本说明 I/O 模型:就是用什么样的通道或者说是通信模式和架构进行数据的传输和接收,很大程度上决定了程序通信的性能,Java 共支持 3 种网络编程的/IO 模型:]BIO、NIO、AIO。 实际通信需求下,要根据不同的业务场景和性能需求决定选择不同的I/O模型 I/O模型 BIO 同步并阻塞(传统阻塞型),服务器实现模式为一个客户端连接一个线程,即客户端有连接请求时,服务 端就需要启动一个线程进行处理,如果这个连接不做任何事情会造成不必要的线程开销 【简单示意图】 NIO 同原创 2021-07-02 13:57:43 · 130 阅读 · 0 评论