ThreadLocal使用例子
时间: 2024-11-07 21:12:37 浏览: 20
ThreadLocal是一种线程本地变量,它保证每个线程都拥有独立的副本。这种变量在多线程环境中非常有用,因为它们不会在所有线程之间共享,而是每个线程有自己的值。下面是一个简单的ThreadLocal使用示例:
```java
import java.util.concurrent.ThreadLocalRandom;
public class ThreadLocalExample {
private static final ThreadLocal<Integer> threadLocal = new ThreadLocal<>();
public static void main(String[] args) {
// 每个线程都会创建一个新的随机数
for (int i = 0; i < 5; i++) {
new Thread(() -> {
int randomNum = threadLocal.get() != null ? threadLocal.get() : ThreadLocalRandom.current().nextInt(100);
System.out.println(Thread.currentThread().getName() + " - Random number: " + randomNum);
// 更新当前线程的ThreadLocal值
threadLocal.set(randomNum * 2);
}).start();
}
}
}
```
在这个例子中,`threadLocal`存储的是每个线程的专属随机数。当新线程开始时,会从`threadLocal`获取初始值(默认为null),然后生成一个新的随机数。线程结束后,我们通过`set()`方法更新该线程的局部变量值。
阅读全文