併發程式設計的知識總結

2021-09-18 01:37:16 字數 318 閱讀 6303

對併發領程式設計從全面的去看待,可以抽象成三個核心問題:

分工— 同步 —互斥

分工:分工重要且複雜

同步:乙個執行緒完成任務後,如何通知執行後續任務的執行緒

互斥:同一時刻,只允許乙個執行緒訪問共享變數

併發程式設計有三大問題:可見性 原子性 有序性

可見性產生的原因:計算機記憶體和cup的速度相差很多,為了方便它們互動,所以增加了快取,在單核的cpu上是沒有問題的,但是多核的cpu在併發程式設計的時,存在一些問題,例如兩個執行緒同時從記憶體中獲取資料載入到快取中,2個不同執行緒在不同的cpu上執行同時對乙個記憶體變數進行操作,執行緒對cpu中的快取進行操作,

併發程式設計總結

一 併發基礎 1 用synchronized來修飾乙個方法,如同給乙個方法上了一把鎖,當多個執行緒同時訪問這個方法,每個執行緒都要先拿到這個鎖才能執行這個方法,執行完方法之後釋放鎖,其他的執行緒繼續 競爭鎖 來搶鎖,搶到之後執行再釋放,迴圈結束。2 多個執行緒多個鎖,乙個物件有一把鎖,如果想用多個物...

java併發程式設計實戰 基礎知識總結

第一部分小結 1,可變狀態至關重要。所有的併發問題都可以歸結為如何協調對併發狀態的訪問,可變狀態越少就越容易確保執行緒安全性。無狀態物件永遠是執行緒安全的。2,盡量將域申明為final型別,除非需要他們是可變的。3,不可變物件一定是執行緒安全的。不可變物件能極大地降低併發程式設計的複雜性,他們更為簡...

併發程式設計雜碎小知識

1 作業系統編寫的語言 組合語言,c語言 2 wins cmd其實就是乙個軟體與作業系統打交道 linux shell直譯器 3 現在摩爾定律越來越不適用了,所以會出現技術革新,比如出現go語言,但並未找到真正更好的辦法 4 雙擊 啟動程式 也叫互動式 5 程序的建立 作業系統底層會呼叫不同的介面 ...