执行时SocketChannel中的读/写方法是否会阻塞当前线程?

时间:2019-07-18 13:16:15

标签: java nio

在我看来,当没有数据传入或写入时,读/写方法不会阻塞。 如, 在服务器中:

ServerSocketChannel channel = key.channel();
SocketChannel c = channel.accept();
c.configureBlocking(false);
c.read(byteBuffer);

在客户端中:

SocketChannel c = SocketChannel.open();
c.connect(new InetSocketAddress("localhost", 8088));
c.close();

c.read(byteBuffer);不会阻塞,因此我们说此方法是无阻塞的。

但是我的问题是,当在c.read(byteBuffer);中读取大量数据时,该方法是否需要花费更多时间执行?还是只是一步一步然后执行下一行?如果需要更多时间,这是一种无阻塞方法吗?而且如果结束了,我怎么知道ByteBuffer完成读取了?

0 个答案:

没有答案