4

嘿,所以我想知道如何使AtomicInteger成为二维数组,从我在 javadocs AtomicIntegerArray上找到的内容来看,它只是一维的。

int[] newArray = new int[100];
AtomicIntegerArray atomicarray = new AtomicIntegerArray(newArray);

这会创建一个大小为 100 的 AtomicIntegerArray。但我想要一个具有二维的 atomicarray。我试过做..

AtomicInteger[][] atomicArray = new AtomicInteger[100][100];
atomicArray[00][00].set(1);

但是遇到了..

nz.ac.massey.threadpool.MyClass.(MyClass.java:20) 的 java.lang.NullPointerException

那么有什么想法吗?谢谢!:)...我以前没有对原子变量做过很多工作。

如果这是不可能的,我怎样才能将一个常规的原始整数两个暗淡数组最小化为一个 AtomicInteger 两个暗淡数组?

4

2 回答 2

6

只需创建一个长度为的一维数组m * n,然后您需要一个将一对整数映射(i, j)到一个整数的函数。i * n + j是一个好的开始。假设m是行n数和列数。

将所有整数保存在 AtomicIntegerArray 中是个好主意。或者你必须自己处理并发问题。

于 2012-05-23T11:03:27.033 回答
2

您需要在访问它们之前实例化矩阵中的所有位置,如下所示:

atomicArray[i][j] = new AtomicInteger();

或者这样,如果你想用某个初始值初始化每个原子整数:

atomicArray[i][j] = new AtomicInteger(initialValue);

那,对于i,j矩阵中的所有位置。通常你会使用几个嵌套for循环来做到这一点:

for (int i = 0; i < 100; i++) {
    for (int j = 0; j < 100; j++) {
        atomicArray[i][j] = new AtomicInteger();
    }
}
于 2012-05-23T11:01:20.340 回答