1.概述
JDK 1.2的版本中就提供java.lang.ThreadLocal,ThreadLocal为解决多线程程序的并发问题提供了一种新的思路。使用这个工具类可以很简洁地编写出优美的多线程程序,ThreadLocal并不是一个Thread,而是Thread的局部变量。
2多说无益,上代码
简单实现在不同线程获取不同值的小Demo
public static final ThreadLocal<String> mThreadLocal = new ThreadLocal<String>() ;
public static void main(String[] args) {
//主线程设置为false
mThreadLocal.set("小明") ;
new Thread("therad--1"){
public void run() {
mThreadLocal.set("小红") ;
System.out.println("thread--1:" + mThreadLocal.get());
};
}.start() ;
new Thread("therad--2"){
public void run() {
mThreadLocal.set("小花") ;
System.out.println("thread--2:" + mThreadLocal.get());
};
}.start() ;
System.out.println("主线程:" + mThreadLocal.get());
}
首先创建一个ThreadLocal对象,并且通过泛型指定要在线程中存入的值。然后就是在不同的线程中set和get,通过结果可以看到,不同的线程获取的值使对应该线程设置的值