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

          ThreadLocal與synchronized

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


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

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

          主站蜘蛛池模板: 青阳县| 新田县| 蓬安县| 木兰县| 辽阳市| 介休市| 故城县| 德阳市| 河曲县| 桃江县| 体育| 合水县| 三门县| 宁远县| 开平市| 五家渠市| 白城市| 莱芜市| 日照市| 上虞市| 安达市| 东宁县| 房山区| 定边县| 扎囊县| 娄底市| 浦江县| 安塞县| 江油市| 金湖县| 天气| 江陵县| 柏乡县| 惠东县| 唐山市| 休宁县| 铜鼓县| 兴海县| 即墨市| 株洲市| 井陉县|