gpt4 book ai didi

java - 在 main 中创建数组并用来自单独线程的数据填充它

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

好吧,我在这方面遇到了麻烦,也许我想得太久了或者很愚蠢,但这就是我所拥有的和我正在尝试做的:

更新-代码全部修复,不再出现运行问题。

public class myClass program {
int [] w = null;
int [] x = null;
Thread T = null;
public static void main(String [] args){
x = new int[5];
w = new int[5];

// here i am trying to invoke a new thread passing the index
// of my array, then incrementing the index each time i create a new thread
// the purpose is to fill each index each time the new thread runs.

for(int i = 0; i < w.length; i ++){
// T = new Thread(new myThreadClass(w[i])); // only passes 0 take this out and
T = new Thread( new myThreadClass(i)); // pass i so the position changes
T.start();
try{
Thread.sleep(100);
}catch(Exception e){}

}
}

在我单独的类 myThreadClass.java 中,我有以下内容:

public class myThreadClass extends Thread{
int [] w = null;
int position = 0;
int value = 1;

public myThreadClass(int p){
this.position = p
w = myClass.w;
}

@Override
public void run(){
// synchronize the thread so there is no memory cache problems
//
synchronized(w){
w[position] = value;
}
}

}

当我从 myClass 打印出 w 的输出时:

我得到w = 1 0 0 0 0

但我想要w = 1 1 1 1 1

已编辑 - 我现在得到了正确的输出 - 检查代码是否有更改

最佳答案

在这部分myThreadClass(w[i])中,您没有传递索引,而是传递一个值,该值为零,因为w是一个包含5的数组元素,全部初始化为默认值 0。

您应该改为使用myThreadClass(i)

关于java - 在 main 中创建数组并用来自单独线程的数据填充它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12920444/

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