1、讀寫鎖將一個資源(如文件)的訪問分為兩個鎖,一個讀寫鎖。
2、因為讀寫鎖,多個線程之間的讀寫操作才不會發(fā)生沖突。
3、ReadWriteLock是讀寫鎖,它是一個界面,RentrantReadWriteLock實現(xiàn)了這個界面。
實例
public class CacheDemo {
private Map<string, object=""> cache = new HashMap<>();
private ReadWriteLock readWriteLock = new ReentrantReadWriteLock();
public static void main(String[] args) {
}
public Object getData(String key) {
Object value = null;
//首先開啟讀鎖,從緩存中去取
readWriteLock.readLock().lock();
try {
value = cache.get(key);
//如果緩存中沒有釋放讀鎖,上寫鎖
if (value == null) {
//對應queryDB()
readWriteLock.readLock().unlock();
//讀鎖必須unlock之后才能獲取寫鎖
readWriteLock.writeLock().lock();
try {
//對應queryDB()
value = queryDB();
} finally {
//釋放寫鎖
readWriteLock.writeLock().unlock();
}
//然后再上讀鎖
readWriteLock.readLock().lock();
}
} finally {
//最后釋放讀鎖
readWriteLock.readLock().unlock();
}
return value;
}
public Object queryDB() {
return "aaaa";
}
}
以上就是java讀寫鎖的介紹,希望對大家有所幫助。更多關于“java培訓”的問題,歡迎咨詢千鋒教育在線名師。千鋒教育多年辦學,課程大綱緊跟企業(yè)需求,更科學更嚴謹,每年培養(yǎng)泛IT人才近2萬人。不論你是零基礎還是想提升,都可以找到適合的班型,千鋒教育隨時歡迎你來試聽。