java 深入剖析ThreadLocal
生活随笔
收集整理的這篇文章主要介紹了
java 深入剖析ThreadLocal
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
一.對ThreadLocal中的理解
ThreadLocal的,很多地方叫做線程本地變量,也有些地方叫做線程本地存儲,其實意思差不多。可能很多朋友都知道的ThreadLocal為變量在每個線程中都創建了一個副本,那么每個線程可以訪問自己內部的副本變量。
這句話從字面上看起來很容易理解,但是真正理解并不是那么容易。
我們還是先來看一個例子:
class ConnectionManager {private static Connection connect = null;public static Connection openConnection() {if(connect == null){connect = DriverManager.getConnection();}return connect;}public static void closeConnection() {if(connect!=null)connect.close();} }假設有這樣一個數據庫鏈接管理類,這段代碼在單線程中使用是沒有任何問題的,但是如果在多線程中使用呢?很顯然,在多線程中使用會存在線程安全問題:第一,這里面的2個方法都沒有進行同步,很可能在openConnection方法中會多次創建connect;第二,由于connect是共享變量,那么必然在調用connect的地方需要使用到同步來保障線程安全,因為很可能一個線程在使用connect進行數據庫操作&#x
總結
以上是生活随笔為你收集整理的java 深入剖析ThreadLocal的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 个人免费API网站
- 下一篇: 老师助手为什么总是服务器错误,【家长助手