鎖和同步的區別

2021-10-02 15:56:52 字數 469 閱讀 8151

用法上的不同:

synchronized既可以加在方法上,也可以載入特定**塊上,而lock需要顯示地指定起始位置和終止位置。

synchronized是託管給jvm執行的,lock的鎖定是通過**實現的,它有比synchronized更精確的執行緒語義。

效能上的不同:

lock介面的實現類reentrantlock,不僅具有和synchronized相同的併發性和記憶體語義,還多了超時的獲取鎖、定時鎖、等候和中斷鎖等。

在競爭不是很激烈的情況下,synchronized的效能優於reentrantlock,競爭激烈的情況下synchronized的效能會下降的非常快,而reentrantlock則基本不變。

鎖機制不同:

synchronized獲取鎖和釋放鎖的方式都是在塊結構中,當獲取多個鎖時,必須以相反的順序釋放,並且是自動解鎖。而lock則需要開發人員手動釋放,並且必須在finally中釋放,否則會引起死鎖。

同步 互斥鎖 讀寫鎖 區別

相交程序之間的關係主要有兩種,同步與互斥。所謂互斥,是指散步在不同程序之間的若干程式片斷,當某個程序執行其中乙個程式片段時,其它程序就不能執行它 們之中的任一程式片段,只能等到該程序執行完這個程式片段後才可以執行。所謂同步,是指散步在不同程序之間的若干程式片斷,它們的執行必須嚴格按照規定的 某種先後...

執行緒同步互斥鎖和讀寫鎖的區別和各自適用場景

讀寫鎖特點 1 多個讀者可以同時進行讀 2 寫者必須互斥 只允許乙個寫者寫,也不能讀者寫者同時進行 3 寫者優先於讀者 一旦有寫者,則後續讀者必須等待,喚醒時優先考慮寫者 互斥鎖特點 一次只能乙個執行緒擁有互斥鎖,其他執行緒只有等待 自旋鎖 一次只能有乙個程序進入臨界區,讀寫鎖是自旋鎖的乙個特例。應...

執行緒的同步和鎖

為避免多執行緒對同乙個物件進行操作,對資料造成的破壞。public class tt extends thread override public void run public int takeit int x public static void main string args 非靜態方法同步...