您的位置:首页 > 其它

Threadlocal与InheritableThreadLocal

2016-08-15 00:00 295 查看
Threadlocal可以维持一个线程独立的变量,但是当我们需要一个线程独立变量需要对子线程共享这个变量时Threadlocal就不能取到值了。InheritableThreadLocal就能处理这种情况

public class QuickTest {
private ThreadLocal<String> localInfo = new ThreadLocal<String>();
private InheritableThreadLocal<String> inLocalInfo = new InheritableThreadLocal<String>();

@Test
public void testInheriableThreadlocal() throws InterruptedException{
localInfo.set("thread main");
inLocalInfo.set("inthread main");

Thread myThread =new Thread(new Runnable() {
public void run() {
System.out.println(Thread.currentThread()+" localThead:"+localInfo.get());
System.out.println(Thread.currentThread()+" InlocalThead:"+inLocalInfo.get());
}
});
myThread.start();
myThread.join();

System.out.println(Thread.currentThread()+" localThead:"+localInfo.get());
System.out.println(Thread.currentThread()+" InlocalThead:"+inLocalInfo.get());
}
}

在代码中ThreadLocal在子线程不能拿到,InheritableThreadLocal就能拿到了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: