ThreadLocal只能储存一个
时间: 2023-11-14 07:12:50 浏览: 168
Java中的ThreadLocal类是用于创建线程本地变量的类,它可以让我们在每个线程中创建一个变量的副本,每个线程都可以独立地改变自己的副本,而不会影响其他线程的副本。ThreadLocal只能储存一个变量,但是可以通过嵌套使用ThreadLocal来实现多个变量的存储。
例如,我们可以创建一个ThreadLocal对象,然后将其作为静态变量存储在类中,然后在需要使用的地方通过get()方法获取该对象,然后再通过该对象的set()方法设置需要存储的变量值。这样,每个线程都可以独立地访问和修改自己的变量值,而不会影响其他线程的变量值。
下面是一个简单的示例代码:
```
public class ThreadLocalDemo {
private static ThreadLocal<Integer> threadLocal = new ThreadLocal<Integer>();
public static void main(String[] args) {
threadLocal.set(1);
System.out.println("Thread 1: " + threadLocal.get());
Thread thread2 = new Thread(new Runnable() {
@Override
public void run() {
threadLocal.set(2);
System.out.println("Thread 2: " + threadLocal.get());
}
});
thread2.start();
System.out.println("Thread 1: " + threadLocal.get());
}
}
```
在上面的示例中,我们创建了一个ThreadLocal对象,并将其作为静态变量存储在类中。然后我们在主线程中设置了变量值为1,并通过get()方法获取该值并输出。接着,我们创建了一个新的线程,并在该线程中设置变量值为2,并通过get()方法获取该值并输出。最后,我们再次在主线程中获取变量值并输出。运行该程序,输出结果如下:
```
Thread 1: 1
Thread 2: 2
Thread 1: 1
```
可以看到,每个线程都可以独立地访问和修改自己的变量值,而不会影响其他线程的变量值。
阅读全文