java Android ArrayIndexOutOfBoundsException错误
我查看了其他有这个问题的帖子,但它们似乎与editText
字段或off by one错误有某种联系。就我而言,其他帖子的解决方案似乎都没有帮助。这是我的代码:
public void push(int w, int h) {
int[][] temp_arr = new int[arr.length+1][2];
for (int i=0; i<arr.length; i++) {
temp_arr[i][0] = arr[i][0];
temp_arr[i][1] = arr[i][1];
}
temp_arr[arr.length][0] = w; // happens here
temp_arr[arr.length][1] = h;
arr = temp_arr;
}
以下是错误消息:
Process: <package name>, PID: 16749
java.lang.ArrayIndexOutOfBoundsException: length=76; index=76
我该怎么解决这个问题
# 1 楼答案
您有两个不同的
Thread
同时调用push
当第一个完成
push
的执行时,它将arr
替换为temp_arr
,后者的长度为1当第二个到达
temp_arr[arr.length][0]
时,会出现索引错误,因为arr
的大小与temp_arr
初始化时的大小不同为了防止这种情况,可以使用
ExecutorService
在同一个Thread
上连续运行多个Runnable
,顺序为:http://developer.android.com/reference/java/util/concurrent/Executors.html#newSingleThreadExecutor%28%29或者可以添加
synchronized
块: