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

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是否有数据进入;

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