ThreadLocal
用于实现每个线程都有自己的共享变量。即隔离线程中的变量。
示例
public class ThreadLocalTest {
private static ThreadLocal threadLocal = new ThreadLocal();
private static class MythreadA extends Thread {
private Object object;
@Override
public void run() {
threadLocal.set(this.getName());
System.out.println(threadLocal.get());
}
}
public static void main(String[] args) throws InterruptedException {
MythreadA thread1=new MythreadA();
MythreadA thread2=new MythreadA();
thread1.start();
thread2.start();
}
}
输出:
Thread-0
Thread-1
注:默认返回null。
若不想默认返回null,可以创建自己的ThreadLocal,然后重写initialValue方法
InheritableThreadLocal
可以在子线程中取得父线程继承下来的值。