一、ThreadLocal
Threadlocal是一个线程内部的存储类,可以在指定线程内存储数据,数据存储以后,只能由创建它的线程内才可以得到存储数据。
public static void main(String[] args) {
ThreadLocal<Integer> threadLocal = new ThreadLocal<Integer>();
threadLocal.set(100);
Thread thread = new Thread(new Runnable() {
@Override
public void run() {
System.out.println(Thread.currentThread().getName() + ": " + threadLocal.get());
}
});
Thread thread1 = new Thread(new Runnable() {
@Override
public void run() {
System.out.println(Thread.currentThread().getName() + ": " + threadLocal.get());
}
});
thread.start();
thread1.start();
System.out.println(Thread.currentThread().getName() + ": " + threadLocal.get());
}
main:100
Thread-0:null
Thread-1:null
由于ThreadLocal.set()方法是在主线程内执行的,所以只有主线程才能获取到设置的值。