gpt4 book ai didi

java - For 循环在线程内不能正常工作

转载 作者:行者123 更新时间:2023-12-01 14:14:27 25 4
gpt4 key购买 nike

编辑2:这是代码和输出:

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 没有打印出来。?

最佳答案

如果 myFunc() 被调用两次,或者如果在线程完成之前有其他任何事情正在修改 itemsIdsArray 中的值,那么这将影响线程所看到的内容.

如果您希望效果就像线程启动时值的“快照”,请在创建线程之前复制相关数组,并将本地副本传递给线程。

关于java - For 循环在线程内不能正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18244313/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com