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

相关文章
相关标签/搜索