【发布时间】:2011-11-23 11:04:49
【问题描述】:
我正在尝试使用 Java.nio-package 进行非阻塞通信。所以我在 Selector 中获取了我的 ServerSocketChannel 和所有连接的客户端 (SocketChannel),并使用 Selector.select() 等待数据 (OP_ACCEPT/OP_READ)。
我的问题是:我可以使用底层 Socket,而不是使用 ByteBuffer 并直接使用 SocketChannel.read() 读取,获取 InputStream 并使用该流读取吗?还是会弄乱选择器的东西?
【问题讨论】:
-
read() 是一个阻塞操作。只有 NIO 可以用于阻塞或非阻塞模式。 IO 只是阻塞。