Я готов использовать ByteBuffer
для межпотоковой связи JNI и C ++. Я не мог найти в документации, является ли ByteBuffer getInt()
блокирует или нет. Итак, мне нужно сделать что-то вроде:
if(byteBuffer.asIntBuffer().hasRemaining())
byteBuffer.getInt();
Thread.sleep(1000);
или же
byteBuffer.getInt();
будет блокировать, так что спать не нужно?
В соответствии с документация, если в буфере нет как минимум четырех байтов, он выдаст BufferUnderflowException
, Это говорит о том, что он не блокируется (как и тот факт, что слово «блок» вообще не появляется на странице документации).
Но обратите внимание, что ваш sleep
решение не сработает, потому что вы делаете sleep
вызов после призвание getInt
, который уже сгенерировал исключение, если там еще недостаточно данных. Вы должны убедиться, что в буфере есть как минимум четыре байта до ты звонишь getInt
,
Других решений пока нет …