《JDK源码分析,2024最新Java开发面试解答

======================================================================

本系列IO模式详解 主要介绍BIO,NIO和AIO内容,深入了解源码+实战。目标是让小伙伴们可以快速了解IO的阻塞、同步、异步的现象、概念和特征以及优缺点。

第一章:I/O模型演进

===============================================================================

I/O 模型基本说明


Java 3种常用的网络编程/IO 模型:BIO-同步阻塞IO(Blocking IO)、NIO-IO多路复用模型( IO multiplexing )(JAVA New IO)、AIO-异步IO(Asynchronous IO)

实际通信需求下,要根据不同的业务场景和性能需求决定选择不同的I/O模型

V1.0:I/O模型 BIO


**BIO(blocking I/O) ** :同步并阻塞(传统阻塞型),服务器实现模式为一个连接一个线程,即客户端有连接请求时,服务器端就需要启动一个线程进行处理,如果这个连接不做任何事情会造成不必要的线程开销 。

JDK支持的版本:JDK1.4以前

image-20211023210230653

Java BIO 就是传统的 java io 编程,其相关的类和接口在java.io

传统的 java.io包,它基于流模型实现,提供了我们最熟知的一些 IO 功能,比如 File 抽象、输入输出流等。交互方式是同步、阻塞的方式,也就是说,在读取输入流或者写入输出流时,在读、写动作完成之前,线程会一直阻塞在那里,它们之间的调用是可靠的线性顺序。

很多时候,人们也把 java.net下面提供的部分网络 API,比如 Socket、ServerSocket、HttpURLConnection 也归类到同步阻塞 IO 类库,因为网络通信同样是 IO 行为。

BIO优点 :是代码比较简单、直观,方便实现。

BIO缺点 :则是 IO 效率和扩展性存在局限性,容易成为应用性能的瓶颈。

BIO适用场景 :适用于连接数目比较小且固定的架构,这种方式对服务器资源要求比较高,并发局限于应用中。

V2.0:I/O模型 NIO


Java NIO(New IO) : 同步非阻塞,服务器实现模式为一个线程处理多个请求(连接),即客户端发送的连接请求都会注册到多路复用器 上,多路复用器轮询到连接有 I/O 请求就进行处理

JDK支持的版本:JDK1.4开始支持

image-20211023213530212

Java NIO 相关类都被放在 java.nio 包及子包下,提供了 Channel、Selector、Buffer 等新的抽象,可以构建多路复用的、同步非阻塞 IO 程序,同时提供了更接近操作系统底层的高性能数据操作方式。

NIO优点 :NIO 是可以做到用一个线程来处理多个操作的。假设有 1000 个请求过来,根据实际情况,可以分配20 或者 80个线程来处理。不像之前的阻塞 IO 那样,非得分配 1000 个。。

NIO缺点 : 技术实现复杂度高,增加维护成本。

NIO适用场景 :适用于连接数目多且连接比较短(轻操作)的架构,比如聊天服务器,弹幕系统,服务器间通讯等

小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数初中级Java工程师,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新Java开发全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img
img

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频

如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注Java)
img

都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频**

如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注Java)
[外链图片转存中…(img-AtWvSuYj-1710847278737)]

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值