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