讀寫鎖 ReadWriteLock的使用

2021-10-20 21:41:18 字數 950 閱讀 8664

readwritelock是乙個介面,只有乙個實現類reentrantreadwritelock 

讀寫鎖:讀的時候可以多執行緒同時讀,寫的時候只能有乙個執行緒單獨寫,讀的時候不允許寫

讀鎖readlock即共享鎖

寫鎖writelock即獨佔鎖

使用舉例:

public class readwritelocktest ,string.valueof(i))

.start();

} // 多執行緒同時讀

for(int i = 1;i <= 5;i++)

,string.valueof(i))

.start();

}}}// 資源類

class data catch (interruptedexception e)

finally

} // 讀:讀的時候可以多執行緒同時讀

public void read(

)catch (interruptedexception e)

finally

}}

結果:

2正在寫入

2寫入結束

1正在寫入

1寫入結束

4正在寫入

4寫入結束

3正在寫入

3寫入結束

5正在寫入

5寫入結束

1正在讀取

2正在讀取

3正在讀取

4正在讀取

5正在讀取

1讀取結束

2讀取結束

5讀取結束

4讀取結束

3讀取結束

讀寫鎖與自旋鎖

一 讀寫鎖 1 特點 讀寫鎖比mutex有更高的適用性,可以多個執行緒同時占用讀模式的讀寫鎖,但是只能乙個執行緒占用寫模式的讀寫鎖。1 當讀寫鎖是寫加鎖狀態時,在這個鎖被解鎖之前,所有試圖對這個鎖加鎖的執行緒都會被阻塞 2 當讀寫鎖在讀加鎖狀態時,所有試圖以讀模式對它進行加鎖的執行緒都可以得到訪問權...

互斥鎖和讀寫鎖

互斥鎖的型別 對資源的訪問是互斥的,即執行緒a對資源加鎖後,在a解鎖前,其他執行緒不能訪問這個加鎖的資源。互斥鎖的特點 多個執行緒訪問資源的時候是序列的 互斥鎖的使用步驟 建立乙個互斥鎖 pthread mutex t mutex 初始化這把鎖 pthread mutex init mutex,nu...

讀寫鎖 可重入鎖

讀寫鎖就是分了兩種情況,一種是讀時的鎖,一種是寫時的鎖,它允許多個執行緒同時讀共享變數,但是只允許乙個執行緒寫共享變數,當寫共享變數的時候也會阻塞讀的操作。這樣在讀的時候就不會互斥,提高讀的效率。可以用來讀寫快取,步驟 1 加讀鎖,從快取讀取key對應的value 2 若讀取到,則返回,並釋放讀鎖 ...