我在ThreadLocal中傳入了一個對象。 現在我的當前線程將創建新的子線程。 我想從ThreadLocal的對象應繼續與子線程也。如何從子線程中的ThreadLocal繼續對象?
有什麼辦法可以這麼做....?
預先感謝您....
我在ThreadLocal中傳入了一個對象。 現在我的當前線程將創建新的子線程。 我想從ThreadLocal的對象應繼續與子線程也。如何從子線程中的ThreadLocal繼續對象?
有什麼辦法可以這麼做....?
預先感謝您....
您可以通過get()
方法從ThreadLocal
中檢索對象本身,並將此引用傳遞給您的子線程。
如果您想要與您的子線程共享它,請參閱其他答案。
所以,你想要一個的InheritableThreadLocal?
你需要的是一個InheritableThreadLocal
。當創建後者時,將InheritableThreadLocal
從父線程傳遞給子線程(Java「按值調用」語義)。
謝謝.....這適用於我..... – user574557 2011-06-13 10:26:06
它是否適用於ThreadPools?像ExecutorService一樣? – 2016-06-29 13:42:42
不適用於ThreadPools。請參閱評論:http://stackoverflow.com/questions/7259906/propagating-threadlocal-to-a-new-thread-fetched-from-a-executorservice#comment8735906_7260192 – 2016-06-29 13:44:02
從技術上講,不能共享可繼承的線程本地。每個子線程都獲得它自己的線程局部變量......這是從父線程的本地初始化的。 – 2013-07-01 09:30:52