多執行緒高併發

2021-10-06 11:26:50 字數 860 閱讀 7158

修飾靜態方法鎖的是class,非靜態鎖方法鎖的是this,只有拿到這個物件才可以繼續執行**。

synchronized是可重入鎖執行緒1的方法1呼叫執行緒2的方法2,判斷是同一把鎖,在同乙個執行緒,可以呼叫。

synchronized的鎖公升級(hotsport)

鎖公升級過程

保證執行緒可見性

mesi快取一致性協議,參考jmm。

禁止指令重排序

jvm規範要求volatile前後得加屏障,屏障兩邊不能指令重排,保障有序。具體參考jmm。必須手動解鎖,寫在finally中。

方法

castrylock 是否獲取鎖

lockinterruptibly 沒有獲取鎖就等待,使用interrupt()終止。

公平和非公平鎖

phaser.arriveandawaitadvance(), 等待到達(設定參加的人數時觸發onadvance)並繼續前進。

phaser.arriveandderegister(), 離開。

兩個執行緒交換資料

exchange.exchange(交換資料): 呼叫此方法阻塞等待。

多執行緒高併發

個人總結,帶有個人主觀,請選擇性 1,實現 runable 2,使用 thread 3,執行緒池建立 executorse newcachedthreadpool 其實哪有那麼多建立方式,本質上都是實現了runable 介面。只列出大部分使用的方法,並未代表所有執行緒方法,後續會新增實際的例子,以供...

高併發和多執行緒

高併發和多執行緒 總是被一起提起,給人感覺兩者好像相等,實則高併發 多執行緒 多執行緒是完成任務的一種方法,高併發是系統執行的一種狀態,通過多執行緒有助於系統承受高併發狀態的實現。高併發是一種系統執行過程中遇到的一種 短時間內遇到大量操作請求 的情況,主要發生在web系統集中大量訪問或者socket...

多執行緒與高併發

blocked 鎖池 timed waiting 定時等待 waiting 等待 terminated 禁止指令重排序 記憶體屏障 在單例雙重檢查中,不加會出現使用半初始化的值,也就是還未附初始值,指令重排導致的 類載入與指令重排的知識 public class spinlock while fla...