posts - 29, comments - 0, trackbacks - 0, articles - 0
            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

          ThreadLocal與synchronized

          Posted on 2007-05-28 15:53 change 閱讀(275) 評論(0)  編輯  收藏


          ThreadLocal通過一個Map來為每個線程都持有一個變量副本。
          這個map以當前線程為key。與synchronized相比,ThreadLocal是以空間換時間的策略來實現多線程程序。

          synchronized是利用鎖的機制,使變量或代碼塊在某一時該只能被一個線程訪問。
          而ThreadLocal為每一個線程都提供了變量的副本,使得每個線程在某一時間訪問到的并不是同一個對象,
          這樣就隔離了多個線程對數據的數據共享。
          而Synchronized卻正好相反,它用于在多個線程間通信時能夠獲得數據共享。
          Synchronized用于線程間的數據共享,而ThreadLocal則用于線程間的數據隔離。
          當然ThreadLocal并不能替代synchronized,它們處理不同的問題域。
          Synchronized用于實現同步機制,比ThreadLocal更加復雜。

          主站蜘蛛池模板: 靖州| 青河县| 卓资县| 会东县| 普定县| 桂东县| 嘉禾县| 高雄市| 青浦区| 萝北县| 会同县| 通道| 绥芬河市| 喀什市| 平泉县| 虞城县| 油尖旺区| 永嘉县| 十堰市| 治多县| 台湾省| 阳原县| 西藏| 吉木乃县| 马公市| 蒲江县| 上饶县| 连江县| 突泉县| 台中县| 尼玛县| 九江市| 沁源县| 清远市| 巴彦淖尔市| 休宁县| 师宗县| 原平市| 马鞍山市| 精河县| 托克托县|