Блокирует ли ByteBuffer.getInt ()?

Я готов использовать ByteBuffer для межпотоковой связи JNI и C ++. Я не мог найти в документации, является ли ByteBuffer getInt() блокирует или нет. Итак, мне нужно сделать что-то вроде:

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

или же

byteBuffer.getInt();

будет блокировать, так что спать не нужно?

0

Решение

В соответствии с документация, если в буфере нет как минимум четырех байтов, он выдаст BufferUnderflowException, Это говорит о том, что он не блокируется (как и тот факт, что слово «блок» вообще не появляется на странице документации).

Но обратите внимание, что ваш sleep решение не сработает, потому что вы делаете sleep вызов после призвание getInt, который уже сгенерировал исключение, если там еще недостаточно данных. Вы должны убедиться, что в буфере есть как минимум четыре байта до ты звонишь getInt,

3

Другие решения

Других решений пока нет …

А ты уже прошел курс программирования? Супер скидка!
Прокачать скилл $$$
×