Java併發程式設計基礎 鎖

2021-09-25 02:33:56 字數 700 閱讀 4114

1 悲觀鎖和樂觀鎖

悲觀鎖:在sql語句末尾加上for update

樂觀鎖:在sql的where語句中新增version條件

update tablel set name=# and version=#
樂觀鎖並不會使用資料庫提供的鎖機制, 一般在表中新增version 宇段或者使用業務

狀態來實現。樂觀鎖直到提交時才鎖定,所以不會產生任何死鎖。

2 公平鎖和非公平鎖

公平鎖 :antlock pairlock = new reentrantlock(true);

非公平鎖: reentrantlock pairlock = new reentrantlock(false);

在沒有公平性需求的前提下盡量使用非公平鎖,因為公平鎖會帶來效能開銷。

3 獨佔鎖和共享鎖

獨佔鎖:保證任何時候都只有乙個執行緒能得到鎖,reentrantlock、synchronized都屬於獨佔鎖;

共享鎖:允許多個執行緒同時進行讀操作,如readwritelock允許多個執行緒同時讀操作。

4 自旋鎖

當前執行緒在獲取鎖時,如果發現鎖已經被其他執行緒占有,它不馬上阻塞自己,在不放棄cpu 使用權的情況下,多次嘗試獲取, 預設次數是10 ,可以使用-xx :preblockspinsh 引數設定該值),這種實現方式可能會浪費cpu的時間。

Java 併發程式設計 基礎 一

同步 和 非同步描述方法的呼叫。同步 方法呼叫一旦開始,呼叫者必須等到方法呼叫返回後,才能繼續後續的行為。序列的進行方法的呼叫。非同步方法呼叫更像乙個訊息傳遞,一旦方法呼叫就會立即返回。併發 多個任務交替執行。並行 多個cpu的系統上,多個cpu同時執行任務。用來表示公共資源或者公共資料。可以被多個...

Java併發程式設計基礎 ThreadLocal的使用

1.threadlocal 簡介 什麼是threadlocal threadlocal 為執行緒變數,是乙個以threadlocal物件為key,任意物件為值的儲存 結構,這個結構被附帶到執行緒上。threadlocal的作用 通過set t 來設定乙個值,在當前執行緒下通過get 方法獲取到原先設...

Java併發程式設計基礎 ThreadLocal的使用

1.threadlocal 簡介 什麼是threadlocal threadlocal 為執行緒變數,是乙個以threadlocal物件為key,任意物件為值的儲存 結構,這個結構被附帶到執行緒上。threadlocal的作用 通過set t 來設定乙個值,在當前執行緒下通過get 方法獲取到原先設...