java IO ——new I/O包
2017-05-02 19:50
134 查看
新IO系统基于两个最简单的项目:通道和缓存区。通道代表对一个IO源或目标的开放式连接,缓存区存放可操作的数据,NIO是异步非阻塞式调用io系统
同步、异步、阻塞、非阻塞
同步是一个连接一个线程,而异步是一个请求一个线程,阻塞是当读取不到数据时线程会等待,非阻塞是线程发出数据请求后转而向下执行,当数据加载好时通知线程
NIO基础
fileinputstream f = new FileInputStream(".txt")//
FileChannel fchan = f.getchannel();//建立通道
int fsize = fchan.size();
bytebuffer fb = bytebuffer.allocate(fsize);//建立缓存区
fchan.read(fb);//将数据读取到缓存区
NIO和IO的区别
1、IO是面向流的,从流中读取,没有缓存区不能操作;NIO是面向缓存的,在缓存中可以进行数据处理
2、IO中的流是阻塞的,当进行read或write时,线程将不能执行直到读取全部数据, NIO的非阻塞模式,使一个线程从某通道发送请求读取数据,但是它仅能得到目前可用的数据,如果目前没有数据可用时,就什么都不会获取。而不是保持线程阻塞,所以直至数据变的可以读取之前,该线程可以继续做其他的事情。
非阻塞写也是如此。一个线程请求写入一些数据到某通道,但不需要等待它完全写入,这个线程同时可以去做别的事情。 线程通常将非阻塞IO的空闲时间用于在其它通道上执行IO操作,所以一个单独的线程现在可以管理多个输入和输出通道(channel)。
3、通道类似于流,但可以双向操作
4、选择器(Selectors)Java
NIO的选择器允许一个单独的线程来监视多个输入通道,你可以注册多个通道使用一个选择器,然后使用一个单独的线程来“选择”通道:这些通道里已经有可以处理的输入,或者选择已准备写入的通道。这种选择机制,使得一个单独的线程很容易来管理多个通道。
5、当连接多而带宽小时用NIO,当连接少但带宽大时用IO
同步、异步、阻塞、非阻塞
同步是一个连接一个线程,而异步是一个请求一个线程,阻塞是当读取不到数据时线程会等待,非阻塞是线程发出数据请求后转而向下执行,当数据加载好时通知线程
NIO基础
fileinputstream f = new FileInputStream(".txt")//
FileChannel fchan = f.getchannel();//建立通道
int fsize = fchan.size();
bytebuffer fb = bytebuffer.allocate(fsize);//建立缓存区
fchan.read(fb);//将数据读取到缓存区
NIO和IO的区别
1、IO是面向流的,从流中读取,没有缓存区不能操作;NIO是面向缓存的,在缓存中可以进行数据处理
2、IO中的流是阻塞的,当进行read或write时,线程将不能执行直到读取全部数据, NIO的非阻塞模式,使一个线程从某通道发送请求读取数据,但是它仅能得到目前可用的数据,如果目前没有数据可用时,就什么都不会获取。而不是保持线程阻塞,所以直至数据变的可以读取之前,该线程可以继续做其他的事情。
非阻塞写也是如此。一个线程请求写入一些数据到某通道,但不需要等待它完全写入,这个线程同时可以去做别的事情。 线程通常将非阻塞IO的空闲时间用于在其它通道上执行IO操作,所以一个单独的线程现在可以管理多个输入和输出通道(channel)。
3、通道类似于流,但可以双向操作
4、选择器(Selectors)Java
NIO的选择器允许一个单独的线程来监视多个输入通道,你可以注册多个通道使用一个选择器,然后使用一个单独的线程来“选择”通道:这些通道里已经有可以处理的输入,或者选择已准备写入的通道。这种选择机制,使得一个单独的线程很容易来管理多个通道。
5、当连接多而带宽小时用NIO,当连接少但带宽大时用IO
相关文章推荐
- 用Java的New IO开发网络协议
- 流 JAVA IO 基本小结 通过一行常见的代码讨论:new BufferedReader(new InputStreamReader(System.in))
- New IO JAVA1.4特性
- 尚硅谷java——NIO(New IO)
- 用Java的New IO开发网络协议
- Java IO 文件读取问题记录(class.getResourceAsStream 和 new FileInputStream)
- com.mchange.v2.c3p0.impl.NewProxyPreparedStatement.setBinaryStream(ILjava/io/InputStream;J)V
- 异步同步与阻塞非阻塞 及java IO、java newIO、java AIO之间的关系
- 流 JAVA IO 基本小结 通过一行常见的代码讨论:new BufferedReader(new InputStreamReader(System.in))
- solr 4.0 SolrException: Error opening new searcher java.io.FileNotFoundException 问题解决方案
- hadoop错误Ignoring exception during close for org.apache.hadoop.mapred.MapTask$NewOutputCollector@17bda0f2 java.io.IOException Spill failed
- Java New IO(NIO)详解
- 多线程高性能 7x24小时 Java NewIO 程序 小结
- NIO - java new io2 since jdk7
- Java中的IO File类创建名字new.txt文件 是否成功创建问题
- 尚硅谷java学习笔记——NIO(New IO)
- java io中CreateNewFile()和createTempFile()
- Java new io
- java new IO
- 用Java的New IO开发网络协议