Java NIO与Java BIO的区别是什么?

本文介绍了Java NIO(非阻塞I/O)和BIO(阻塞I/O)的区别。NIO通过Selector实现单线程管理多个Channel,减少线程资源消耗,适合高并发场景。而BIO则在等待数据读写时会阻塞线程,资源利用率较低。文中还提供了NIO和BIO服务器的示例代码,以及Java学习视频推荐。

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

1、什么是Java NIO?

        同步非阻塞io模式,拿烧开水来说,NIO的做法是叫一个线程不断的轮询每个水壶的状态,看看是否有水壶的状态发生了改变,从而进行下一步的操作。

        Java NIO有三大组成部分:Buffer;Channel;Selector。

        通过事件驱动模式实现了什么时候有数据可读的问题。 Channel:相当于IO操作的载体,相当于一个硬件设备,一个文件,一个socket或是区别程序中的不同IO操作,如read,write。

        channel类似流,但又有些不同: 既可以从通道中读取数据,又可以写数据到通道。但流的读写通常是单向的。 通道可以异步地读写。 通道中的数据总是要先读到一个Buffer,或者总是要从一个Buffer中写入。

        Buffer:用于和NIO通道进行交互。如你所知,数据是从通道读入缓冲区,从缓冲区写入到通道中的。 缓冲区本质上是一块可以写入数据,然后可以从中读取数据的内存。这块内存被包装成NIO Buffer对象,并提供了一组方法,用来方便的访问该块内存。 channel 和 buffer 之间的交互如下:

        ​Selector:Selector(选择器)是Java NIO中能够检测一到多个NIO通道,通道将关心的事件注册到selector 上,selector能够知

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值