- Java并發編程深度解析與實戰
- 譚鋒(Mic)
- 435字
- 2022-05-10 18:39:16
2.3 關于synchronized同步鎖的思考
經過前面的分析,我們大概對同步鎖有了一些基本的認識,同步鎖的本質就是實現多線程的互斥,保證同一時刻只有一個線程能夠訪問加了同步鎖的代碼,使得線程安全性得到保證。下面我們思考一下,為了達到這個目的,我們應該怎么做呢?
? 同步鎖的核心特性是排他,要達到這個目的,多個線程必須去搶占同一個資源。
? 在同一時刻只能有一個線程執行加了同步鎖的代碼,意味著同一時刻只允許一個線程搶占到這個共享資源(鎖),其余沒搶占到的線程只能等待。
? 處于等待狀態的線程不能一直占用CPU資源,如果沒搶占到鎖就要被阻塞等待,并且釋放CPU資源。
? 如果非常多的線程都被阻塞了,那么我們要通過一個容器來存儲線程,當獲得鎖的線程執行完任務并釋放鎖后,要從這個容器中喚醒一個線程,被喚醒的線程會再次嘗試搶占鎖。
根據這個猜想,可以形成如圖2-5所示的流程圖,synchronized同步鎖實際的實現比這個流程圖要復雜,后面我們會詳細講解。大家可以根據這個圖來理解synchronized同步鎖,在腦海里形成一個初步的全局視角。

圖2-5 synchronized同步鎖的實現猜想
推薦閱讀
- Learning Scala Programming
- ASP.NET Web API:Build RESTful web applications and services on the .NET framework
- 企業級Java EE架構設計精深實踐
- 深入淺出Spring Boot 2.x
- 算法精粹:經典計算機科學問題的Python實現
- Spring實戰(第5版)
- Python之光:Python編程入門與實戰
- Mastering Data Mining with Python:Find patterns hidden in your data
- Julia for Data Science
- Getting Started with Nano Server
- R語言數據可視化:科技圖表繪制
- 算法設計與分析:基于C++編程語言的描述
- 監控的藝術:云原生時代的監控框架
- Implementing Microsoft Dynamics NAV(Third Edition)
- 從零開始學Python大數據與量化交易