2016-07-15 40 views
3

我需要通過這樣一個線程來計算一個數組:爪哇 - 如何確保一個Callable線程返回數組的知名度

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(); 

我不知道如何確保result中所有元素的可見性。根據Memory Consistency Properties部分,在關係之前似乎沒有這種情況發生。

走動的一種方法是將數組包裝成AtomicIntegerArray。但是我想知道是否有其他解決方案可以推廣到任何一種原始數組。

由於

回答