什么是ThreadLocal
- 定义:ThreadLocal 是线程的局部变量,为每个线程提供单独一份存储空间,具有线程隔离的效果。
- 特点:不同的线程之间不会相互干扰。
ThreadLocal的应用场景
- 数据共享:在同一个线程或同一个请求中进行数据共享。
创建 ThreadLocal 变量
你可以通过直接实例化 ThreadLocal
来创建一个变量:
ThreadLocal<String> threadLocal = new ThreadLocal<>();
设置值
使用 set
方法为当前线程设置一个值:
threadLocal.set("Hello, ThreadLocal!");
获取值
使用 get
方法获取当前线程的值:
String value = threadLocal.get();
System.out.println(value); // 输出: Hello, ThreadLocal!
删除值
使用 remove
方法删除当前线程的值,以避免内存泄漏:
threadLocal.remove();
使用初始值
你可以在创建 ThreadLocal
时提供一个初始值,这样在第一次调用 get
方法时会自动设置这个初始值:
ThreadLocal<String> threadLocalWithInitialValue = new ThreadLocal<String>() {@Overrideprotected String initialValue() {return "Default Value";}
};
Spring Boot 配置的优先级从低到高如下:
application.yaml
(忽略)application.yml
application.properties
- Java 系统属性(通过
-Dxxx=xxx
设置) - 命令行参数(通过
--xxx=xxx
设置)
4和5是web设置,命令行参数优先级最高。