ThreadLocal是用来创建当前线程的局部变量的类,创建的变量只能被当前线程访问和修改
原理:
set方法的原理:
1.首先获取当前线程对象
2.利用当前线程获取ThreadLocalMap对象
3.如果ThreadLocalMap对象不为空,则设置值,否则创建这个Map对象并设置值
由此可看出ThreadLocal变量的值是放入了当前线程创建的ThreadLocalMap对象中,所以只能当前线程访问变量值
private void testThreadLocal() {
Thread t = new Thread() {
ThreadLocal<String> mStringThreadLocal = new ThreadLocal<>();
@Override
public void run() {
super.run();
mStringThreadLocal.set("droidyue.com");
mStringThreadLocal.get();
}
};
t.start();
}