Does a call to java.lang.Readable.read block?



我正在实现一个使用通用读取接口的工具。我正在使用java.lang.Readable接口,它使用CharBuffer将数据写出。

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

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

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

最新更新