我有一个关于Java内存模型的问题.这是一个介绍问题的简单类:
public class ImmutableIntArray {
private final int[] array;
public ImmutableIntArray() {
array = new int[10];
for (int i = 0; i < 10; i++) {
array[i] = i;
}
}
// Will always return the correct value?
public int get(int index) {
return array[index];
}
}
Run Code Online (Sandbox Code Playgroud)
据我所知,JMM保证在构造之后其他线程可以看到最终字段的值.但是我希望确保其他线程在构建之后能够看到存储在数组中的最新数据版本.
当然上面的代码只是一个呈现问题的简单示例,实际上我想为直接字节缓冲区实现一个简单的缓存,我不想依赖一些Collection类.目前我正在使用ReentrantReadWriteLock来确保正确的行为,但如果可能的话我想避免它.
java concurrency immutability thread-safety java-memory-model