0

我愿意使用ByteBufferJNI 和 C++ 的线程间通信。我在文档中找不到 ByteBuffergetInt()是否阻塞。那么,我是否需要执行以下操作:

if(byteBuffer.asIntBuffer().hasRemaining())
    byteBuffer.getInt();
Thread.sleep(1000);

或者

byteBuffer.getInt();

会阻塞所以睡眠是不必要的?

4

1 回答 1

3

根据文档,如果缓冲区中没有至少四个字节,它将抛出BufferUnderflowException. 这表明它不会阻塞(就像“阻塞”这个词根本没有出现在其文档页面上一样)。

但请注意,您的sleep解决方案将不起作用,因为您是在sleep调用之后进行调用getInt,如果那里还没有足够的数据,这将已经引发异常。在调用之前,您需要确保缓冲区中至少有四个字节getInt

于 2013-04-04T16:01:46.593 回答