io 错误: socket read timed out_JAVA的 IO 和 NIO

本文介绍了Java的IO模型,包括传统的阻塞BIO、伪异步IO和非阻塞NIO。重点讲述了NIO的核心组件——Channel、Buffer和Selector,强调了NIO的非阻塞特性和Selector在多通道管理中的作用,对比了IO与NIO的区别,如面向缓冲、阻塞与非阻塞以及选择器的使用。
摘要由CSDN通过智能技术生成

094e0ca3107499a03f02ef900bf61475.png

传统BIO模型

    传统BIO是一种同步的阻塞IO,IO在进行读写时,该线程将被阻塞,线程无法进行其它操作。IO流在读取时,会阻塞。直到发生以下情况:

1、有数据可以读取。

2、数据读取完成。

3、发生异常

伪异步IO模型

    以传统BIO模型为基础,通过线程池的方式维护所有的IO线程,实现相对高效的线程开销及管理。

NIO模型

    NIO(JDK1.4)模型是一种同步非阻塞IO,主要有三大核心部分:Channel(通道),Buffer(缓冲区), Selector(多路复用器)。

NIO优点:

  1. 通过Channel注册到Selector上的状态来实现一种客户端与服务端的通信。

  2. Channel中数据的读取是通过Buffer , 一种非阻塞的读取方式。

  3. Selector 多路复用器 单线程模型, 线程的资源开销相对比较小。

NIO和IO的主要区别

下表总结了Java IO和NIO之间的主要区别:

IO

NIO

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值