ThreadLocal小技巧

1.ThreadLocal是每一個線程存放共享變量區域,通常沒有存值的狀況下get老是返回null。如下是初始化 ThreadLocal的默認值:
public static void main(String[] args) throws InterruptedException {
	ThreadLocal<String> threadLocal = new ThreadLocal<String>(){
		@Override
		protected String initialValue() {
			return "設置默認值";
		}
	};
	
	System.out.println(threadLocal.get());
}
結果:

設置默認值 java

2.ThreadLocal是隔離每一個線程的。但若是想要在子線程中取得主線程中的值,就要使InheritableThreadLocal。如: ide

private static InheritableThreadLocal<String> shareLocal = new InheritableThreadLocal<String>();
public static void main(String[] args) throws InterruptedException {
	shareLocal.set("main set : hello");
	
	new Thread(){
		public void run() {
			System.out.println(shareLocal.get());
		};
	}.start();
}

結果:
main set : hello spa

相關文章
相關標籤/搜索