【发布时间】:2013-08-17 03:33:24
【问题描述】:
EDIT2:这是代码和输出:
private void myFunc()
{
itemsIdsArray = new boolean[3];
for(int i = 0;i<itemsIdsArray.length;i++){
itemsIdsArray[i] = true;
}
for(int i = 0;i<itemsIdsArray.length;i++){
if(itemsIdsArray[i]){
Log.d(Global.TAG,"first in i: " + i);
}
}
Thread timer = new Thread(){
public void run(){
try{
for(int i = 0;i<itemsIdsArray.length;i++){
if(itemsIdsArray[i]){
Log.d(Global.TAG,"second in i: " + i);
}
}
}finally{
}
}
};
timer.start();
}
输出:
08-15 03:27:38.136: D/MyTag(22229): first in i: 0
08-15 03:27:38.136: D/MyTag(22229): first in i: 1
08-15 03:27:38.136: D/MyTag(22229): first in i: 2
我的问题:为什么第二个循环 i 没有打印出来。?
【问题讨论】:
-
itemsIdsArray是如何初始化的? -
我想你必须提供一个SSCCE
-
您需要向我们展示更多代码。据我们所知,您只需将
itemsIdsArray的每个元素都设置为false,这正是它应该做的。 -
itemsIdsArray 只是一个字段,该数组的单元格是动态填充的,代码很多,我不认为我应该发布它。我正在 1 分钟内编辑原始帖子。
-
@idish 不发布所有内容,只发布与
itemsIdsArrayinitialization 相关的内容,以及将发生这种情况的方法与timer@987654329 所在的方法相关联的任何内容@ 被初始化并运行。您的编辑是您首先发布的代码的副本。这不会有帮助。
标签: java android arrays multithreading boolean