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

相關文章
相關標籤/搜索