【Java进阶】NIO(一)<NIO概述>

NIO在JDK1.4中引入,提供了Buffer、Channel和Selector等核心组件,以缓冲区为中心,实现非阻塞I/O操作。与传统IO面向流和线程阻塞不同,NIO是面向缓冲区且线程不阻塞的,能提高程序的灵活性和效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在这里插入图片描述

一、NIO介绍

  • JDK 1.4中引入了NIO,可以最大限度的满足Java程序I/O的需求
  • java.nio包:定义了各种与Buffer相关的类
  • java.nio.channel包:包含与Channel和Selector相关的类型
  • java.nio.charset包:与字符集相关的类
  • 在NIO中有三大核心组件:Buffer、Channel、Selector

二、传统IO和NIO对比

在这里插入图片描述

  • 传统IO
    ① 是面向流的,每次可以从流中读取一个或多个字节,只能向后读取,不能向前移动
    ② 是线程阻塞的,在调用read()/write()方法读写数据时,线程阻塞,直到数据读取完毕或者数据完全写入,在读写过程中,线程不能做其他的任务
  • NIO
    ① 是面向缓冲区的,把数据读到一个缓冲区中,可以在缓冲区中向前/向后移动,增加了程序的灵活性
    ② 在NIO中,所有的数据都需要通过Channel传输,通道可以直接将一块数据映射到内存中
    ③ Channel是双向的,不仅可以读取数据,还能保存数据。程序不能直接读写Channel通道,Channel只与Buffer缓冲区交互
    ④ 是线程不阻塞的,当线程从Channel中读取数据时,如果通道中没有可用的数据,线程不阻塞,可以做其他的任务
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值