学堂 学堂 学堂公众号手机端

ThreadLocal类可以用来创建线程局部变量,在每个线程中存储独立的变量副本

lewis 2年前 (2023-12-20) 阅读数 5 #技术

ThreadLocal类可以用来创建线程局部变量,在每个线程中存储独立的变量副本。这些变量只对当前线程可见,其他线程无法访问。以下是ThreadLocal类的基本用法示例:

1、创建一个ThreadLocal对象:

ThreadLocal<String>threadLocal=newThreadLocal<>();

2、设置当前线程的局部变量的值:


threadLocal.set("Hello,ThreadLocal!");

3、获取当前线程的局部变量的值:

Stringvalue=threadLocal.get();
System.out.println(value);//输出:Hello,ThreadLocal!

4、在每个线程中存储独立的变量副本:

ThreadLocal<Integer>threadLocal=ThreadLocal.withInitial(()->0);//初始值为0

ExecutorServiceexecutor=Executors.newFixedThreadPool(2);
for(inti=0;i<2;i++){
executor.submit(()->{
intvalue=threadLocal.get();
value++;
threadLocal.set(value);
System.out.println("Thread"+Thread.currentThread().getId()+":"+value);
});
}
executor.shutdown();

在上面的示例中,我们创建一个ThreadLocal对象,每个线程都有自己的变量副本,递增变量值并输出到控制台。每个线程的值是独立的,互不影响。

总之,ThreadLocal类可以在多线程环境中用来存储线程局部变量,保证线程间数据隔离,避免线程安全问题。

版权声明

本文仅代表作者观点,不代表博信信息网立场。

热门