1.ThreadLocal的原理:
ThreadLocal一般称为线程本地变量,是一个特殊的线程绑定机制,
将线程和变量绑定在一起,为每一个线程维护一个独立的变量副本。
通过ThreadLocal可以将对象的可见范围限制在同一个线程内,
而不会和其他线程的副本冲突。
2.最常见的ThreadLocal应用场景:
2.1 用来解决 数据库连接、session管理
2.2 缓存经常需要的对象
2.3 使用线程保持状态(用户id、事务id、日志-id)
3.ThreadLocal的好处
T hreadLocal为解决多线程程序的并发问题提供了一种新的思路。 ThreadLocal并不是一个Thread,而是Thread的局部变量,也许把它命名为ThreadLocalVariable更容易让人理解一 些
4.ThreadLocal基本用法
就是创建一个对象,然后每个线程去访问时,访问的是这个对象的副本。即该对象会为每个线程拷贝出一个副本。
ThreadLocal threadLocalOld = new ThreadLocal(){
@Override
protected String initialValue() {
return new String(“dsadsa”);
}
};
Thread thread = new Thread(()->{
//每个线程调度get函数获取本线程的副本。
String s = threadLocalOld.get();
// set函数set的值,只会设置本线程的值,不会对其他线程有任何影响。
threadLocalOld.set(“dsad”);
});
Thread thread1 = new Thread(()->{
//ThreadLocal效果定义local variable类似。
String s = new String(“dsadsa”);
});