Java 对于循环isn';在一根线内工作不好
EDIT2:以下是代码和输出:Java 对于循环isn';在一根线内工作不好,java,android,arrays,multithreading,boolean,Java,Android,Arrays,Multithreading,Boolean,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]){
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();
}
我的问题:为什么我的第二个循环没有被打印?如果myFunc()
被调用了两次,或者如果在线程完成之前有任何其他内容正在修改itemsIdsArray
中的值,那么这将影响线程的查看效果
如果您希望效果像启动线程时值的“快照”,请在创建线程之前复制相关数组,并将本地副本传递给线程。如何初始化
itemsisdsarray
我认为您必须提供一个示例,您需要向我们展示更多代码。据我们所知,您只需将itemsisdsarray
的每个元素设置为false
,这正是它应该做的。itemsisdsarray只是一个字段,数组的单元格动态填充了true,这是很多代码,我认为我不应该发布它。我在1分钟内编辑了原始帖子。@idish不会发布所有内容,只发布与itemsIdsArray
初始化相关的内容,以及与计时器线程
初始化并运行的方法相连接的内容。您的编辑是您首先发布的代码的副本。这不会有什么帮助。非常感谢您的解决方案,您完全正确,我没有想到在后台线程执行时,数组由前台线程重新初始化。我设法修复了它,现在它工作得很好:)