生活随笔
收集整理的這篇文章主要介紹了
java线程之InheritableThreadLocal
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
ThreadLocal和InheritableThreadLocal區(qū)別,可以用代碼測試一下:
?
[java]?view plain?copy
package?com.lang;????import?junit.framework.TestCase;????import?static?java.lang.System.out;????public?class?TestInheritableThreadLocal?extends?TestCase?{????????public?void?testThreadLocal()?{??????????final?ThreadLocal<String>?local?=?new?ThreadLocal<String>();??????????work(local);??????}????????????public?void?testInheritableThreadLocal()?{??????????final?ThreadLocal<String>?local?=?new?InheritableThreadLocal<String>();??????????work(local);??????}????????????private?void?work(final?ThreadLocal<String>?local)?{??????????local.set("a");??????????out.println(Thread.currentThread()?+?","?+?local.get());??????????Thread?t?=?new?Thread(new?Runnable()?{????????????????????????????@Override??????????????public?void?run()?{??????????????????out.println(Thread.currentThread()?+?","?+?local.get());??????????????????local.set("b");??????????????????out.println(Thread.currentThread()?+?","?+?local.get());??????????????}??????????});????????????????????t.start();??????????try?{??????????????t.join();??????????}?catch?(InterruptedException?e)?{??????????????e.printStackTrace();??????????}????????????????????out.println(Thread.currentThread()?+?","?+?local.get());??????}??}??
運行testThreadLocal,輸出:
?
[plain]?view plain?copy
Thread[main,5,main],a??Thread[Thread-0,5,main],null??Thread[Thread-0,5,main],b??Thread[main,5,main],a??
運行testInheritableThreadLocal,輸出:
?
[plain]?view plain?copy
Thread[main,5,main],a??Thread[Thread-0,5,main],a??Thread[Thread-0,5,main],b??Thread[main,5,main],a??
比較后,看到ThreadLocal里的值,子線程里不能獲得;InheritableThreadLocal里的值,子線程可以獲得。
總結
以上是生活随笔為你收集整理的java线程之InheritableThreadLocal的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網(wǎng)站內容還不錯,歡迎將生活随笔推薦給好友。