官术网_书友最值得收藏!

2.3 關于synchronized同步鎖的思考

經過前面的分析,我們大概對同步鎖有了一些基本的認識,同步鎖的本質就是實現多線程的互斥,保證同一時刻只有一個線程能夠訪問加了同步鎖的代碼,使得線程安全性得到保證。下面我們思考一下,為了達到這個目的,我們應該怎么做呢?

? 同步鎖的核心特性是排他,要達到這個目的,多個線程必須去搶占同一個資源。

? 在同一時刻只能有一個線程執行加了同步鎖的代碼,意味著同一時刻只允許一個線程搶占到這個共享資源(鎖),其余沒搶占到的線程只能等待。

? 處于等待狀態的線程不能一直占用CPU資源,如果沒搶占到鎖就要被阻塞等待,并且釋放CPU資源。

? 如果非常多的線程都被阻塞了,那么我們要通過一個容器來存儲線程,當獲得鎖的線程執行完任務并釋放鎖后,要從這個容器中喚醒一個線程,被喚醒的線程會再次嘗試搶占鎖。

根據這個猜想,可以形成如圖2-5所示的流程圖,synchronized同步鎖實際的實現比這個流程圖要復雜,后面我們會詳細講解。大家可以根據這個圖來理解synchronized同步鎖,在腦海里形成一個初步的全局視角。

圖2-5 synchronized同步鎖的實現猜想

主站蜘蛛池模板: 桦南县| 肥东县| 巴彦淖尔市| 慈利县| 康保县| 临清市| 广汉市| 绥阳县| 宣城市| 神农架林区| 内乡县| 孝昌县| 庆元县| 从化市| 柳林县| 澄江县| 新昌县| 广宗县| 巴东县| 天水市| 安新县| 克什克腾旗| 辛集市| 平乐县| 沈阳市| 兴隆县| 平塘县| 鱼台县| 普兰店市| 长海县| 建昌县| 青田县| 方正县| 汾西县| 高密市| 浦江县| 阳泉市| 铁力市| 赫章县| 普陀区| 蚌埠市|