java IO ——new I/O包
来源:互联网 发布:mysql查询面试题及答案 编辑:程序博客网 时间:2024/05/21 15:41
新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
0 0
- java IO ——new I/O包
- 详解JAVA I/O之一——java.io包详细解说
- I/O篇(1)——java.io.File类
- java i/o包
- Java: NIO(new I/O)
- NIO(java new I/O)
- 《Java编程思想》学习笔记12——Java new I/O(一)
- 《Java编程思想》学习笔记13——Java new I/O(二)
- 《Java编程思想》学习笔记12——Java new I/O(一)
- 《Java编程思想》学习笔记13——Java new I/O(二)
- 《Java编程思想》学习笔记12——Java new I/O(一)
- 《Java编程思想》学习笔记13——Java new I/O(二)
- 《Java编程思想》学习笔记8——Java new I/O(一)
- Java I/O 学习笔记(7) new I/O
- Java New I/O的使用
- Java New I/O的使用
- Java New I/O的使用
- 详解JAVA I/O之二——java.io层次结构
- 【OpenCV学习笔记 024】Stitcher类实现全景图像拼接
- 简单明了区分escape、encodeURI和encodeURIComponent
- php开源库推荐
- Subarray Sum Equals K
- 蛇形填数
- java IO ——new I/O包
- 72-套接字与标准I/O
- 语言学大师 —— 乔姆斯基
- ac自动机最详细的讲解,让你一次学会ac自动机。
- 编写两个线程,具有共享存储单元,运行观察结果
- 电商项目开发流程
- 乱码问题的解决
- eclipse中文注释乱码问题解决
- 数据结构中Java利用穷举法解决八皇后问题