gpt4 book ai didi

Java多线程 - 单数组更新

转载 作者:行者123 更新时间:2023-11-29 05:45:30 25 4
gpt4 key购买 nike

我想在不同的线程中修改一个数组,让我解释一下。

我有一个包含对象数组的“父”线程,最初它是空的。我想用多线程实现的是一种填充这个数组的方法。例如,线程 1 将发出请求并填充位置 0-20,线程 2 21-40 等等。在 C 中,这很容易,我只需传递指针并从那里开始工作。

由于 java 不允许,我不知道该怎么做。我不能从 run() 返回任何东西,也不能将它作为参数传递到线程构造函数中,因为数组不能从上面的线程访问。我希望有人知道这样做的干净方法。

myclass 扩展线程并覆盖运行。

最佳答案

没有理由扩展Thread。线程是用于执行工作单元的资源,您不是在创建新类型的资源,而是在定义工作单元。只需实现runnable,然后您就可以定义自己的构造函数并传入Array。

public class ArrayPopulator implements Runnable {

private Object[] array;
private int minIndex;
private int maxIndex;

public ArrayPopulator(Object[] array, int minIndex, int maxIndex) {
//assignments
}

public void run() {
for (int i = minIndex; i <= maxIndex; i++) {
//you get the idea
}
}
}


Thread thread1 = new Thread(new ArrayPopulator(array, 0, 19));
Thread thread1 = new Thread(new ArrayPopulator(array, 20, 39));

关于Java多线程 - 单数组更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15977019/

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