Java併發相關概念
這是Java記憶體結構模型,其實還有更復雜的CPU快取記憶體,這裡略過,只講working memory與main memory。
working memory,執行緒工作記憶體,執行緒私有,對應的操作:lock、load、use、assign、store、unlock
load:將main memory的值複製到working memory
use:在workingmemory中改變值
assign:對值進行其他操作,如從運算元棧彈出,賦給區域性變數區
store:將變數值從working memory複製到main memory
main memory,主記憶體,執行緒共享,對應的操作:lock、read、write、unlock
關於volatile
volatile僅能保證修飾物件的可見性,不能保證在此物件上的操作的原子性。(jdk1.5之後還能夠保證修飾的物件禁止指令重排)
volatile修飾的變數,執行緒不會將其從main memory複製到work memory,而是直接在main memory中操作。它的代價比synchronized、lock/unlock低,但用起來要非常小心,畢竟不能保證原子操作。
使用volatile的場景:對當前變數的改變不依賴於變數之前的值,如boolean標誌位。
執行緒互動:
wait、notify、notifyAll
當執行緒呼叫了物件的wait方法後,JVM執行緒執行引擎會將次執行緒放入一個wait sets中,並釋放該執行緒在物件上的鎖。wait set中的執行緒不會被JVM執行緒執行引擎排程執行。
當其他執行緒呼叫了此物件的notify方法時,會從wait sets中隨機找一個等待在此物件上的執行緒,並將其從wait sets中移除,這樣JVM執行緒執行引擎就可以再次排程執行該執行緒了。
當呼叫的是notifyAll方法時,會刪除wait sets上所有等待在此物件上的執行緒,然後釋放鎖,讓它們競爭鎖。
執行緒生命週期:
執行緒分為幾種不同的狀態,根據狀態放入不同的sets來進行排程
剛建立時,為new狀態
呼叫start方法後,進入runnable狀態,放入JVM的可執行執行緒佇列中,等待CPU執行許可權
JVM按照執行緒優先順序、時間片、輪循方式來執行runnable狀態的執行緒
執行緒進入start程式碼段,開始執行,狀態變為running
執行過程中出現了sleep、wait、join或者出現IO阻塞、鎖等待時,則進入wait或blocked狀態,這是執行緒放棄CPU時間片進入wait sets或鎖sets
知道wait結束,執行緒被喚醒或獲取到鎖,執行緒在此進入runnable狀態
執行緒執行完畢,執行緒就從可執行執行緒佇列中刪除了。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28912557/viewspace-1131660/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 【系統設計】併發相關概念
- Java併發相關知識點梳理和研究Java
- Java 多執行緒 相關概念Java執行緒
- Android 高階面試-3:Java、同步和併發相關Android面試Java
- 【Java 併發筆記】7 種阻塞佇列相關整理Java筆記佇列
- 【Java併發程式設計】synchronized相關面試題總結Java程式設計synchronized面試題
- Docker相關概念Docker
- Scrum相關概念Scrum
- JS的相關概念JS
- docker相關概念筆記Docker筆記
- ASM之ASM相關概念ASM
- ASM相關概念(筆記)ASM筆記
- java多執行緒核心api以及相關概念(一)Java執行緒API
- Java高併發與多執行緒(一)-----概念Java執行緒
- 相關子查詢&非相關子查詢概念
- Java虛擬機器執行機制與相關概念Java虛擬機
- 區塊鏈相關的關鍵概念區塊鏈
- 畫素相關概念總結
- 磁碟相關概念以及知識
- Oracle RAC 相關概念(Final)Oracle
- Kafka筆記系列-概念相關Kafka筆記
- Java併發--final關鍵字Java
- Java併發——關鍵字synchronized解析Javasynchronized
- iOS 併發概念淺析iOS
- Java Web開發相關連線JavaWeb
- 【Java併發】1. Java執行緒記憶體模型JMM及volatile相關知識Java執行緒記憶體模型
- 啃碎併發(一):Java執行緒總述與概念Java執行緒
- Zookeeper基礎概念及相關原理
- CSS佈局相關基本概念CSS
- oracle goldengate 相關概念介紹OracleGo
- (轉)執行計劃相關概念
- Java高併發之synchronized關鍵字Javasynchronized
- java併發之volatile關鍵字Java
- Java併發—— 關鍵字volatile解析Java
- 好程式設計師Java學習路線分享JVM相關概念程式設計師JavaJVM
- Java併發---併發理論Java
- java date相關Java
- Java Bean相關JavaBean