gpt4 book ai didi

java - 在 Java 中原子读取然后写入 ByteBuffer 的一部分

转载 作者:搜寻专家 更新时间:2023-11-01 01:14:10 24 4
gpt4 key购买 nike

我有一个 ByteBuffer在 java 中,想要读取,然后有条件地修改该字节,例如使用如下方法:

public void updateByte(int index) {
byte b = this.buffer.getByte(index);

if (b == someByteValue) {
this.buffer.setByte(index, someNewByte);
}
}

我如何确保字节的读取和修改是原子发生的?

我不想同步整个 ByteBuffer 或 updateByte 方法,因为我希望多个线程能够同时读取/写入缓冲区的不同字节(即 只要 index 不同,updateByte 就可以被多个线程同时调用。

我使用的 ByteBuffer 没有 byte[] 支持,所以上面例子中的 bb.hasArray() == false

最佳答案

如何为 ByteBuffer 的部分提供一组显式锁定对象(部分可以非常小,例如一个字,也可以很大,例如四个四分之一缓冲区)?

当一个线程想要检查和修改一个字节时,它必须首先获得相应部分的锁,执行它的工作,然后释放锁。

这将允许多个线程访问数据的不同部分,而不需要全局同步。

关于java - 在 Java 中原子读取然后写入 ByteBuffer 的一部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9328459/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com