Threadlocal与InheritableThreadLocal

Threadlocal能够维持一个线程独立的变量,可是当咱们须要一个线程独立变量须要对子线程共享这个变量时Threadlocal就不能取到值了。InheritableThreadLocal就能处理这种状况ui

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就能拿到了。线程

相关文章
相关标签/搜索