我从我发布的Android应用程序向我报告了一个有趣的问题。我有一个二维数组,我正在迭代使用两个for循环,如下所示:
for (int i = 0; i < arr.length; ++i)
{
for (int j = 0; j < arr[i].length; ++j)
{
if (arr[i][j] != 0)
// does stuff
}
}
问题是,某种方式arr [i] [j]!= 0正在抛出一个ArrayIndexOutOfBoundsException。但很少。我每天都有成千上万的人使用该应用程序,并可能获得二十份强制关闭报告。
这是我无法避免的事情,可能是手机内存有问题等等,还是我能做些什么我还没有想过呢?感谢。
答案 0 :(得分:7)
如果您有一个线程读取数组而第二个线程正在改变它们,则此异常并非不可能。具体来说,如果变异线程正在改变数组切片的大小; e.g。
array[i] = new Whatever[array[i].length - 1];