关于NIO的使用问题

都说NIO是面向缓冲区的,BIO是面向流的,那么使用NIO的时候都是从缓冲区读取数据的吗?那么缓冲区中的数据又是何时存入的?20160205173141_646.jpg

这是网络上一个示意图,Buffer的大小是如何确定的?
NIO中还有一个比较重要的选择器,选择器的作用是选择发生事件的Channel,然后将Channel中的数据存放到Buffer中?
最后还有一个问题,就是有一个需求需要做一个NIO的服务器,通常最少需要创建多少个线程?
网上看了一些教程但还是不太明白,望高手解答

回答:

BIO,NIO,最重要的区别是应该是阻塞IO与非阻塞IO,

第一步:获取通道

FileInputStream fin = new FileInputStream( "readandshow.txt" );

FileChannel fc = fin.getChannel();

第二步:创建缓冲区

ByteBuffer buffer = ByteBuffer.allocate( 1024 );

第三步:将数据从通道读到缓冲区

fc.read( buffer );

上面代码基本上可以解释你前半部分的问题

Selector是一个对象,它可以注册到很多个Channel上,监听各个Channel上发生的事件,并且能够根据事件情况决定Channel读写。这样,通过一个线程管理多个Channel,就可以处理大量网络连接了

以上是 关于NIO的使用问题 的全部内容, 来源链接: utcz.com/p/177740.html

回到顶部