關於讀寫鎖模式需要明白幾個要素
1、寫:當前沒有寫操作,以及沒有讀操作
2、讀:當前沒有寫操作
package com.puqiuyu.thread.blog.pattern;
/** *
* *@author sunday
* */
public
class
writeandreadlock
public
writeandreadlock(boolean writepre)
public
synchronized
void
readlock() throws interruptedexception
readings++;
}public
synchronized
void
unreadlock()
public
synchronized
void
writelock() throws interruptedexception
writings++;
} finally
}public
synchronized
void
unwritelock()
}
簡單分析下
1、寫鎖時需要判斷是否有其他寫鎖占用,同時需要判斷是否有讀操作占用。如果有等待。
2、讀鎖時,需要判斷是否有寫鎖占用。
為了保證寫優先,單其他寫鎖加入後,之後讀鎖都等待。
多執行緒 讀寫鎖模式
讀寫鎖 1.寫寫加鎖 2.讀寫加鎖 3.寫都加鎖 4.讀讀不加鎖 public class readwritelock this readingreaders 因為使用了while,所以,當while結束的時候,說明寫完成了.可以讀取資料了.finally public synchronized v...
java多執行緒讀寫檔案之檔案鎖
檔案修改始終是一件很麻煩也很出錯的行為。多執行緒讀寫檔案更是會加大檔案內容混亂的機率,這時,一定要保證在某乙個時刻,只有乙個執行緒在對檔案進行讀寫操作。那麼其他訪問檔案的執行緒該怎麼辦呢?就像去atm取錢一樣,當atm正在被使用時,那麼其他想要使用atm的人只能等待知道atm能使用。讀寫檔案也一樣,...
多執行緒學習 讀寫鎖
讀寫鎖 reentrantreadwritelock 具有互斥排他效果,即同一時間只有乙個執行緒在執行鎖後面的任務,這種效率比較搞。讀鎖也稱為共享鎖,寫鎖也稱為排他鎖。多個讀鎖之間不互斥,讀鎖與寫鎖互斥,寫鎖與寫鎖互斥。在沒有執行緒thread進行寫入操作時,進行讀取操作的多個執行緒都可以獲取讀鎖,...