一、概述
官网:
ThreadLocal用于提供线程内的局部变量,不同线程之间不会互相干扰,这种变量在线程的生命周期内起作用,减少同一个线程内多个函数或者组件之间一些公共变量传递的复杂度。
大白话:
线程并发:ThreadLocal用于在多线程并发的场景下;
传递数据:我们可以通过ThreadLocal在同一线程,不同组件中传递公共变量数据;
线程隔离:每个线程的变量都是独立的,不会互相影响;
二、基本使用
2.1、常用方法
2.2、案例代码
/**
* @Author : 一叶浮萍归大海
* @Date: 2023/11/21 11:50
* @Description: 需求:线程隔离
* 在多线程并发的场景下,每个线程中的变量都是互相独立的
* 线程A: 设置(变量1) 获取(变量1)
* 线程B: 设置(变量2) 获取(变量2)
* <p>
* ThreadLocal:
* 1、set():将变量绑定到当前线程中
* 2、get():获取当前线程绑定的变量
*/
public class ThreadLocalMainApp {
private String content;
ThreadLocal<String> threadLocal = new ThreadLocal<>();
public String getContent() {
return threadLocal.get();
}
public void setContent(String content) {
threadLocal.set(content);
}
public static void main(String[] args) {
ThreadLocalMainApp app = new ThreadLocalMainApp();
for (int i = 1; i <= 5; i++) {
new Thread(() -> {
try {
app.setContent(Thread.currentThread().getName() + "的数据");
System.out.println("=======================");
System.out.println(Thread.currentThread().getName() + "===>" + app.getContent());
} catch (Exception e) {
e.printStackTrace();
}
}, "线程" + i).start();
}
}
}