Java精简的IO和NIO的介绍和区别
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是否有数据进入;
简要整理,欢迎拍砖留言讨论...