gpt4 book ai didi

java - 如何在 Java 线程上使用共享内存?

转载 作者:搜寻专家 更新时间:2023-10-31 19:47:44 25 4
gpt4 key购买 nike

我正在用 Java 实现一个多线程程序,其中每个 thread 都是 class Node extends Thread 类型。

所有这些类都会生成某些值,这些值将被其他类使用。

对于 main,很容易从生成的 threads 中获取值,但是从 threads 本身中,我如何才能获取值其他线程

//Start the threads from a list of objects
for (int i = 0; i < lnode.size(); i++) {
lnode.get(i).start();
}

谢谢

最佳答案

如果你这样做:

class MyThreadRunnable implements Runnable {
List<String> strings;

MyThreadRunnable(List<String> strings) {
this.strings = strings;
}

public void run() {
strings.add(getName());
}
}

// ...

List<String> sharedStrings = new ArrayList<String>();
Thread t1 = new Thread(new MyThreadRunnable(sharedStrings));
Thread t2 = new Thread(new MyThreadRunnable(sharedStrings));

t1.start();
t2.start();

然后 t1t2(相同类型的两个不同线程)将使用相同的列表,并查看另一个线程对其所做的更改。

实际上,由于为简洁起见我没有使用任何同步,这也可能会以某种不可预测的方式破坏列表并导致奇怪的错误。我强烈建议您在处理并发时研究进程同步和 java.util.concurrent 包。

关于java - 如何在 Java 线程上使用共享内存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13830613/

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