1

我正在实现一个使用通用阅读界面的设施。我正在使用 java.lang.Readable 接口,它使用 CharBuffer 将数据写出。

它没有说的是read呼叫是否会阻塞。然而,它确实返回写入缓冲区的字符数量,但对我来说,它也可以表明缓冲区没有足够的空间来写入整个等待的输入,因此只写入了一部分。但是,如果缓冲区有足够的空间,但没有可用的输入(或少于缓冲区可以容纳的字符),会发生什么?将read返回零(或一个小整数)还是会阻塞?

4

2 回答 2

2

是的,它会阻塞。操作完成后,此方法返回添加到缓冲区的 char 值的数量,如果此字符源位于其末尾,则返回 -1。

于 2012-10-02T14:39:03.333 回答
1

如果它是非阻塞的,则必须有一种机制来通知它何时变得可读。所以它不能是非阻塞的。

于 2012-10-02T14:57:35.847 回答