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 若讀取到,則返回,並釋放讀鎖 ...