ThreadLocal主要的應用場景有二:
1:在多線程并發(fā)修改訪問同一個共享變量時犯建,可能會發(fā)生并發(fā)修改異常喇潘。為了防止多線程下對同一個資源訪問產(chǎn)生未知的問題睹限,可以為每個線程創(chuàng)建一個該變量的副本(其實就是為每個線程都單獨創(chuàng)建一個實例)啄寡,每個線程都擁有自己的副本,修改該副本并不影響其他線程的副本數(shù)據(jù)串纺。然后每個線程可通過ThreadLocal對象的get方法即可直接獲取到當前線程對應的副本丽旅。
如下椰棘,每個線程都去獲取一次工具類的某個ThreadLocal對象,雖然此對象是用static修飾的榄笙,但是每個thread通過threadLocal的get方法獲取的對象其實都是不一樣的邪狞。即使修改了某個線程的threadLocal get的對象,其他線程的threadLocal保存的對象并不會改變茅撞。
2:同一線程調(diào)用的多個方法中帆卓,共享同一個變量。如用戶信息乡翅,雖然可以通過參數(shù)的形式傳給調(diào)用的方法鳞疲,但是亦可以考慮使用threadLocal的方式。
參考文章:
https://blog.csdn.net/lambert00001/article/details/128025402