做网站具备的条件,做淘宝头像的网站,做本地分类信息网站赚钱吗,免费的会计做账系统概述
NIO是一种基于缓存的、非阻塞的异步IO。NIO主要涉及到三个概念#xff1a;Buffer#xff08;缓存#xff09;#xff0c;Channel#xff08;通道#xff09;#xff0c;Selector#xff08;选择器#xff09;。NIO和传统IO不同在于#xff1a;NIO是基于缓存的Buffer缓存Channel通道Selector选择器。NIO和传统IO不同在于NIO是基于缓存的而传统IO是基于流的传统IO的数据是从一个出发地流向一个目的地而NIO的数据是从一个Buffer通过Channel流向另一个Buffer的。这样线程就可以将IO过程交给Channel去管理自己可以做其它是所以NIO也是异步的非阻塞的而传统IO在IO过程中必须等待是同步的阻塞的。NIO通过Selector可以监听多个Buffer的事件并响应事件对IO结果进行处理这样就可以用一个线程实现监听多个通道对于单核处理器来说这会提高性能。总的来说就是 1NIO是异步的非阻塞的 2NIO是基于缓存的 3NIO即可读又可写是双向的。 4NIO提供selector可以用单线程实现多个通道的监听
Channel
通道用来操作Buffer通过通道可以写入数据到Buffer或者从缓存读取数据。
打开通道
RandomAccessFile file new RandomAccessFile(d://sample.txt,rw);FileChannel fileChannel file.getChannel();
这里打开的是一个FileChannel当然还有其他类型的通道参看Java NIO Channel
Buffer
Buffer是缓存是一个内存区块可供channel写入或读取。
创建Buffer
ByteBuffer buffer ByteBuffer.allocate(48);
切换工作模式
Buffer有两种工作模式“读取”和“写入”读取之前要调用filp()切换到读取模式
//切换到读取模式
buffer.flip();//读取数据
while(buffer.hasRemaining()){char word (char)buffer1.get();
}
同样写入之前调用clear()方法清空buffer数据准备写入
buffer.clear();fileChannel.read(buffer );
Seletor
用来监听多个通道没用过感触不深还是看参考文档靠谱 参考文档http://tutorials.jenkov.com/ 非常不错的网站