使用ThreadLocal的实例
时间: 2023-10-19 09:34:46 浏览: 45
使用ThreadLocal的实例通常用于在多线程环境中保存线程本地的变量。每个线程都可以独立地访问和修改自己的变量副本,而不会影响其他线程的变量。下面是一个示例:
```java
public class ThreadLocalExample {
private static ThreadLocal<Integer> threadLocal = new ThreadLocal<>();
public static void main(String[] args) {
// 创建并启动两个线程
Thread thread1 = new Thread(new MyRunnable());
Thread thread2 = new Thread(new MyRunnable());
thread1.start();
thread2.start();
}
public static class MyRunnable implements Runnable {
@Override
public void run() {
// 设置线程本地变量的值
threadLocal.set((int) (Math.random() * 100));
// 获取线程本地变量的值并打印
System.out.println(Thread.currentThread().getName() + ":" + threadLocal.get());
// 清除线程本地变量的值
threadLocal.remove();
}
}
}
```
这个示例中,我们创建了一个`ThreadLocal<Integer>`对象`threadLocal`,用于保存整数类型的线程本地变量。在每个线程的`run()`方法中,我们先通过`set()`方法设置线程本地变量的值,然后通过`get()`方法获取并打印该值。最后,我们调用`remove()`方法清除线程本地变量的值。
运行以上代码,你会发现每个线程获取到的值都是独立且随机的,互不干扰。这就是ThreadLocal的作用:为每个线程提供独立的变量副本,保证线程间数据的隔离性和线程安全性。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)