Java精简的IO和NIO的介绍和区别

本文深入探讨了Java中IO和NIO的概念及其在文件操作中的应用,详细解析两者面对不同操作对象时的特性,包括Stream与Buffer的区别,以及阻塞与非阻塞模式下线程行为的差异。

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

Java项目对文件的操作,经常使用IO和NIO,比如文件上传操作,这里简单精简地说一下 IO 和 NIO 的介绍和区别,

一,两者的联系是都可用于对文件进行 IO 读写操作,各种不同的适用场合各有优缺点;

二,两者的区别

1,面对的操作对象

1.1,IO, 面向Stream, 阻塞IO;

1.2,NIO,面向Buffer, 有阻塞和非阻塞两种模式IO, Selector可监控多个channels, 其select()方法判断是否有新的连接进来或以在selector上注册的channel是否有数据进入;

2,阻塞性问题
2.1,所有的 Java IO 流都是阻塞的,当一条线程进行IO操作时,直到全部IO操作完成,在这期间该线程不能做任何其事;

2.2,Java NIO 有阻塞模式和非阻塞模式阻塞模式的NIO除了使用Buffer存储数据外和IO基本没有区别;非阻塞模式允许一个线程从channel中读取数据,通过返回值来判断buffer中是否有数据,如果没有数据,NIO不会阻塞,该线程就可去做其他的事情,稍候再回来判断是否有数据;NIO的selector允许一个线程去监控多个channels的输入,selector的select()方法判断是否有新的连接进来或者已经在selector上注册时channel是否有数据进入;

简要整理,欢迎拍砖留言讨论...

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值