Java—如何确保可调用线程返回的数组的可见性

Java—如何确保可调用线程返回的数组的可见性,java,multithreading,Java,Multithreading,我需要通过如下线程计算数组: public class Calculator implements Callable<int[]> { @Override public int[] call() { int[] result = new int[100]; for (int i = 0; i < result.length; i++) { result[i]++; } ret

我需要通过如下线程计算数组:

public class Calculator implements Callable<int[]> {
    @Override
    public int[] call() {
        int[] result = new int[100];
        for (int i = 0; i < result.length; i++) {
            result[i]++;
        }
        return result;
    }
}
ExecutorService executor = Executors.newFixedThreadPool(1);
Future<int[]> future = executor.submit(new Calculator());
int[] result = future.get();
公共类计算器实现可调用{
@凌驾
公共int[]调用(){
int[]结果=新的int[100];
for(int i=0;i
主线程可能如下所示:

public class Calculator implements Callable<int[]> {
    @Override
    public int[] call() {
        int[] result = new int[100];
        for (int i = 0; i < result.length; i++) {
            result[i]++;
        }
        return result;
    }
}
ExecutorService executor = Executors.newFixedThreadPool(1);
Future<int[]> future = executor.submit(new Calculator());
int[] result = future.get();
ExecutorService executor=Executors.newFixedThreadPool(1);
Future=executor.submit(新计算器());
int[]result=future.get();
我不知道如何确保
result
中所有元素的可见性。根据这一节,似乎没有这样的事发生在关系之前

一种方法是将数组包装成一个
AtomicIntegerArray
。但是我想知道是否还有其他的解决方案可以推广到任何一种基元数组


感谢未来的javadoc

内存一致性影响:异步计算执行的操作发生在另一个线程中相应Future.get()之后的操作之前

它也在OP链接的页面(包装说明)上。