У меня есть ByteBuffer в Java, и я хочу прочитать, а затем условно изменить этот байт, например, с помощью метода, подобного:
public void updateByte(int index) {
byte b = this.buffer.getByte(index);
if (b == someByteValue) {
this.buffer.setByte(index, someNewByte);
}
}
Как я могу гарантировать, что чтение, а затем изменение байта происходит атомарно?
Я не хочу синхронизировать весь метод ByteBuffer или updateByte
, поскольку я хочу, чтобы несколько потоков могли одновременно считывать / записывать разные байты буфера (т. Е. updateByte
может вызываться одновременно много потоков, пока index
отличается).
Используемый мной ByteBuffer не поддерживается байтом [], поэтому bb.hasArray() == false
в примере выше.