I've got a ByteBuffer in java, and want to read, then conditionally modify that byte, e.g. with a method like:
public void updateByte(int index) {
byte b = this.buffer.getByte(index);
if (b == someByteValue) {
this.buffer.setByte(index, someNewByte);
}
}
How can I ensure that the reading then modifying of a byte happens atomically?
I don't want to synchronize the entire ByteBuffer or updateByte
method, since I want multiple threads to be able to read/write different bytes of the buffer at the same time (i.e. updateByte
can be called simultaneously by many threads as long as index
is different).
The ByteBuffer I'm using isn't backed by a byte[], so bb.hasArray() == false
in the above example.