多线程:什么是ThreadLocal?应用场景?
生活随笔
收集整理的這篇文章主要介紹了
多线程:什么是ThreadLocal?应用场景?
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
ThreadLocal(避免線程不安全問題)
?
什么是ThreadLocal?
? ?線程本地變量,也有些地方叫做線程本地存儲,他代表一個線程局部變量。
為什么要ThreadLocal?
? ? 如果一段代碼中所需要的數據必須與其他代碼共享,那就看看這些共享數據的代碼能否保證在同一個線程中執行?如果能夠保證,我們就可以把共享數據的可見范圍限定在同一個線程之內,這樣無需同步,也能夠保證線程之間不出現數據的爭用問題了。
? 面向的問題是從根本上避免多個線程對共享資源的競爭,是為了隔離多個線程的數據共享,也就不需要對多個線程進行同步了。
? ? 通過把數據放在ThreadLocal中就可以讓每個線程創建一個該變量的副本。從而避免了并發訪問時線程安全的問題了。
private ThreadLocal<String> name = new ThreadLocal<>();ThreadLocal的應用場景
? ? ? ? 最常見的ThreadLocal使用場景為 用來解決數據庫連接、Session管理等。如:
? ? ? ? 數據庫連接:
Java代碼 ?
? ? ? ? Session管理:
Java代碼 ?
?
總結
以上是生活随笔為你收集整理的多线程:什么是ThreadLocal?应用场景?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 多线程:线程池里的队列BlockingQ
- 下一篇: 多线程:Executor、Sleep、D