請(qǐng)問(wèn)為什么不能直接使用一個(gè)Thread和Value綁定的Map?
請(qǐng)問(wèn)一下哈,自定義的ThreadLocal中,為什么不能直接聲明一個(gè)Map<Thread, T> 來(lái)保存value,而是要再套一個(gè)map?
請(qǐng)問(wèn)一下哈,自定義的ThreadLocal中,為什么不能直接聲明一個(gè)Map<Thread, T> 來(lái)保存value,而是要再套一個(gè)map?
2020-02-10
舉報(bào)
2020-02-21
秋田君說(shuō)的也很不錯(cuò), 我這里補(bǔ)充下, Map<Thread, T>這種結(jié)構(gòu),hash表沖突會(huì)很?chē)?yán)重,舉個(gè)例子。map.put(thread1, 100);map.put(thread1, 200);map.put(thread1, 300);你發(fā)現(xiàn)沒(méi)有,一個(gè)map put了三個(gè)值,那取值的時(shí)候, 怎么辦呢?
2020-02-17
同樣的 main 函數(shù),使用老師的代碼執(zhí)行會(huì)發(fā)現(xiàn)主線程不同 MyThreadLocal 實(shí)例中的數(shù)據(jù)是互不影響互不干擾的
2020-02-17
從使用上看應(yīng)該是為了不同場(chǎng)景使用時(shí)數(shù)據(jù)隔離,同一線程之間不同 MyThreadLocal 實(shí)例間的數(shù)據(jù)隔離
如果直接使用 Map<Thread, T> 來(lái)存儲(chǔ)數(shù)據(jù),由于 threadLocalMap 是靜態(tài)變量,那么同一線程不同 MyThreadLocal 實(shí)例存儲(chǔ)時(shí),數(shù)據(jù)會(huì)被覆蓋,讀取數(shù)據(jù)時(shí),會(huì)得到錯(cuò)亂的值!
2020-02-10
應(yīng)該為了解耦