用java 实现,多线程中给每个线程中设置一个变量,最后在主线程上收集这个变量信息
时间: 2024-03-25 22:41:31 浏览: 55
可以使用ThreadLocal类来实现在多线程环境中给每个线程设置一个变量,然后在主线程上收集这个变量信息。
具体实现步骤如下:
1. 创建一个ThreadLocal对象,用于保存每个线程的变量信息。例如:ThreadLocal<Integer> threadLocal = new ThreadLocal<>();
2. 在每个线程中设置变量值,例如:threadLocal.set(100);
3. 在主线程中获取每个线程的变量值,并进行收集。例如:
```
List<Integer> list = new ArrayList<>();
for (Thread thread : threads) {
Integer value = thread.local.get();
list.add(value);
}
```
其中,threads是一个存放所有线程的列表,thread.local.get()方法用于获取每个线程的变量值。
完整代码示例:
```
import java.util.ArrayList;
import java.util.List;
public class Main {
public static void main(String[] args) throws InterruptedException {
List<Thread> threads = new ArrayList<>();
for (int i = 0; i < 10; i++) {
Thread thread = new MyThread();
threads.add(thread);
thread.start();
}
List<Integer> list = new ArrayList<>();
for (Thread thread : threads) {
MyThread myThread = (MyThread) thread;
Integer value = myThread.local.get();
list.add(value);
}
System.out.println(list);
}
private static class MyThread extends Thread {
public ThreadLocal<Integer> local = new ThreadLocal<>();
@Override
public void run() {
local.set((int) (Math.random() * 100));
}
}
}
```
在这个示例中,我们创建了10个线程,并为每个线程设置了一个随机变量。然后,在主线程中获取每个线程的变量值,并将其保存在一个列表中,并最终输出这个列表。
阅读全文