ThreadLocal解决的是变量在不同线程间的隔离性,也就是不同线程拥有自己的值,不同线程中的值是可以放入ThreadLocal类中进行保存的。
ThreadLocal,即线程变量,是一个以ThreadLocal对象为键,任意对象为值的存储结构。这个结构被附带在线程上,也就是一个线程可以根据一个ThreadLocal对象查询到绑定在这个线程上的一个值。
可以通过set(T)方法来设置一个值,在当前线程下再通过get()方法获取到原先设置的值。
public class HasSelfPrivateNum {
//ThreadLocal对象用来存放每个线程自己的值
public static ThreadLocal<String> t1=new ThreadLocal<String>();
public void addI(String userName){
}
}
//线程MyThread1 存放自己的值
public class MyThread1 extends Thread{
public void run(){
HasSelfPrivateNum.t1.set("设置一个值");
System.out.print("获取线程的值"+HasSelfPrivateNum.t1.get());
}
}
在第一次调用THreadLocal类的get()方法返回值是null,应该进行初始化,返回默认值。
//如果set方法没有调用的话,
//每个线程会调用一次,进行初始化
public static ThreadLocal<String> t1=new ThreadLocal<String>(){
protected String initialValue(){
return "初始化的值";
}
};
ThreadLocal详解
本文详细介绍了ThreadLocal的作用原理,即如何确保不同线程间变量的隔离性,并提供了具体的使用示例。ThreadLocal允许每个线程拥有独立的变量副本,从而避免了多线程环境下因共享变量而引发的数据竞争问题。


被折叠的 条评论
为什么被折叠?



