多執行緒之共享模型
一段程式碼塊內如果存在對共享資源的多執行緒讀寫操作,稱這段程式碼塊為 臨界區
1、synchronized解決方案
為了避免臨界區的競態條件發生,有多種手段可以達到目的。
阻塞式的解決方案:synchronized,Lock
非阻塞式的解決方案:原子變數
本次課使用阻塞式的解決方案:synchronized,來解決上述問題,即俗稱的【物件鎖】,它採用互斥的方式讓同一時刻至多隻有一個執行緒能持有【物件鎖】,其它執行緒再想獲取這個【物件鎖】時就會阻塞住。這樣就能保證擁有鎖的執行緒可以安全的執行臨界區內的程式碼,不用擔心執行緒上下文切換。
注意
雖然 java 中互斥和同步都可以採用 synchronized 關鍵字來完成,但它們還是有區別的:
互斥是保證臨界區的競態條件發生,同一時刻只能有一個執行緒執行臨界區程式碼;
同步是由於執行緒執行的先後、順序不同、需要一個執行緒等待其它執行緒執行到某個點;
相關文章
- Java 多執行緒共享模型之管程(上)Java執行緒模型
- Java多執行緒之記憶體模型Java執行緒記憶體模型
- 多執行緒系列之 執行緒安全執行緒
- iOS 多執行緒之執行緒安全iOS執行緒
- Java多執行緒之執行緒中止Java執行緒
- Android多執行緒之執行緒池Android執行緒
- java多執行緒之消費生產模型Java執行緒模型
- 多執行緒之Java記憶體模型(JMM)(一)執行緒Java記憶體模型
- 多執行緒之NSOperation執行緒
- 資深消防猿為你解讀Java多執行緒與併發模型之共享物件Java執行緒模型物件
- java多執行緒之執行緒的基本使用Java執行緒
- python多執行緒-共享全域性變數Python執行緒變數
- Java多執行緒之守護執行緒實戰Java執行緒
- 併發與多執行緒之執行緒安全篇執行緒
- 多執行緒之間通訊及執行緒池執行緒
- Java多執行緒之執行緒同步【synchronized、Lock、volatitle】Java執行緒synchronized
- iOS 多執行緒之GCDiOS執行緒GC
- iOS 多執行緒之NSOperationiOS執行緒
- iOS 多執行緒之NSThreadiOS執行緒thread
- iOS 多執行緒之NSOperationQueueiOS執行緒
- Java多執行緒之FutureTaskJava執行緒
- Java多執行緒之CASJava執行緒
- java多執行緒之(synchronized)Java執行緒synchronized
- IOS多執行緒之(GCD)iOS執行緒GC
- Java多執行緒記憶體模型Java執行緒記憶體模型
- 多執行緒和多執行緒同步執行緒
- Redis之單執行緒 Reactor 模型Redis執行緒React模型
- 多執行緒--執行緒管理執行緒
- 執行緒與多執行緒執行緒
- 多執行緒【執行緒池】執行緒
- 執行緒模型執行緒模型
- iOS - 多執行緒分析之 DispatchQueue ⅠiOS執行緒
- java多執行緒之Thread類Java執行緒thread
- 多執行緒之ReentrantLock篇(五)執行緒ReentrantLock
- java多執行緒之volatile理解Java執行緒
- 使用Actor模型管理Web Worker多執行緒模型Web執行緒
- Netty原始碼解析一——執行緒池模型之執行緒池NioEventLoopGroupNetty原始碼執行緒模型OOP
- Java多執行緒-執行緒中止Java執行緒