
《Java IO模型系列》
文章平均质量分 93
包含操作系统的IO模型,五种IO模型,Reactor/Proactor,Java的BIO代码示例,聊天案例,图片服务器案例,多线程改进,NIO的三大组件的详细用法,Buffer/Channel/Selector等大部分常用API的详细用法
緑水長流*z
一个专注于编写自学教程的博主;热衷于分享当下热门的技术~
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
【Java IO模型系列教程-目录大纲】
内容包括BIO、NIO、AIO等Java支持的三大IO模型编程案例,另外提供NIO的一些工具类的使用,Files/Path等,并附上完整案例代码,包括基于磁盘的BIO(FileInputStream/FileOutputStream/RandomAccessFile),基于网络的BIO(Socket/ServerSocket/DatagramSocket),NIO的三大组件:Buffer、Channel、Selector等,基于磁盘的NIO:FileChannel;基于网络的NIO:SocketChanne原创 2022-06-24 08:42:18 · 12300 阅读 · 3 评论 -
五种IO模型:操作系统五种IO模型大全
包含操作系统的应用与内核,CPU指令等级,内核空间、用户空间,内核态与用户态;网络IO,磁盘IO,内存IO,异步/同步IO,阻塞/非阻塞IO,以及操作系统的五种IO模型,阻塞IO,非阻塞IO,复用IO(select、poll、epoll)、信号驱动IO模型,异步IO模型等...原创 2022-05-10 22:52:55 · 104714 阅读 · 6 评论 -
08【AIO编程】
AIO也叫,JDK1.7之后的新特性,AIO引入异步通道的概念,采用了Proactor模式,简化了程序编写,有效的请求才启动线程,它的特点是先由操作系统完成后才通知服务端程序启动线程去处理,一般适用于连接数较多且连接时间较长的应用。与NIO模型不同,读写操作为例,只需直接调用read和write的API即可,这方法都是异步的对于读操作,当有流可读时,系统会将可读的流传入到read方法的缓冲区,并通知应用程序读写都是异步的,完成之后会主动调用回调函数;...原创 2022-07-23 20:41:11 · 842 阅读 · 1 评论 -
07【Path、Files类的使用】
Files类是一个强大的文件处理类,它可以帮助我们类似与一个文件操作的工具类,可以使得普通文件操作变得快捷;原创 2022-07-23 20:37:10 · 2075 阅读 · 0 评论 -
06【NIO核心组件之Selector】
Selector选择器,也叫多路复用器;NIO中实现非阻塞 I/O 的核心对象就是 Selector。当一个连接创建后,不需要创建一个线程来处理这个来连接,这个连接(管道)会被注册到选择器上,选择器可以检查一个或多个 NIO 通道(轮询),并确定哪些通道已经准备好进行读取或写入。这样,一个单独的线程可以管理多个channel,系统不必创建大量的线程,也不必维护这些线程,从而大大减小了系统的开销。需要注意的是:不是所有的 Channel 都可以被 Selector 复用的。能被注册到Selector的Chan原创 2022-07-05 08:40:39 · 1006 阅读 · 0 评论 -
05【NIO核心组件之Channel】
Java NIO的通道类似流,都是用于传输数据的。但通过又与流有些不同;流的数据走向是单向的,分为输入流(只能读取数据),输出流(只能写出数据),但NIO中的通道不一样,通道既可以写数据到Buffer,又可以从Buffer中读取数据;另外流的操作对象是数组,而通道的操作对象是Buffer;FileChannel是用于文件I/O编程的管道类;通过FileInputStream和FileOutputStream可以获取一个关联文件的Channel,即FileChannel;示例代码:我们可以读取Channel原创 2022-06-24 07:58:23 · 782 阅读 · 0 评论 -
04【NIO核心组件之Buffer】
NIO是从JDK1.4版本开始引入的一个新的IO API,NIO支持面向缓冲区的、基于通道的IO操作。NIO将以更加高效的方式进行文件的读写操作。BIO是同步阻塞IO,同步:即在同一时间点只能同时处理一个客户端连接,阻塞:即当调用方法获取数据时,如果没有可用的数据将会阻塞当前线程;NIO则是同步非阻塞IO,NIO中有三大组件,分别是:Channel(通道),Buffer(缓冲区),Selector(选择器);当有客户端连接时,服务器可以获取与该客户端的连接Channel(通道),所有的通道都会被注册到Sel原创 2022-06-24 07:54:29 · 3475 阅读 · 0 评论 -
03【BIO编程】
BIO是同步阻塞IO,Java中的BIO编程分为传统的文件IO编程与网络IO编程。文件IO编程相关类包在包中,网络IO编程相关类在包下;文件IO关联的是某个文件,从文件中读取数据;网络IO则关联的是某个网络连接,从网络上读取数据;但两者都是属于BIO模型(同步阻塞);我们之前学过的IO流中四个顶层父类:InputStream、OutputStream、Reader、Writer都是属于BIO,即同步阻塞式IO我们将文件流换成标准输入流测试当控制台没有数据输入时,将会一直阻塞下去,用户线程(main线程)原创 2022-06-24 07:45:41 · 5744 阅读 · 0 评论 -
02【Java的IO模型】
Java共支持3种网络编程模型/IO模式,分别是:我们可以根据不同的业务场景来决定选择不同I/O处理模型;在BIO模式中,服务器会为每个客户端的请求创建一个对应的线程来处理,由该线程单独负责处理一个客户请求,如果这个连接不做任何事情会造成不必要的线程开销,为此我们可以通过线程池机制改善性能;虽然使用线程池可以一定程度上改善BIO的性能,但依旧无法冲本质上解决BIO同步阻塞的的问题;如果连接大多是长连接,则会导致连接无法释放,新的请求将无法得到处理,另外,BIO这种一个请求对应一个线程的方式在应对高并发的情况原创 2022-06-24 07:43:31 · 5808 阅读 · 0 评论