read-write lock pattern【讀寫】
一:read-write lock pattern的參與者
--->讀寫鎖
--->資料(共享資源)
--->讀執行緒
--->寫執行緒
二read-write lock pattern模式什麼時候使用
--->
* 為了多線執行緒環境下保護資料安全,我們必須避免的衝突
* 乙個執行緒讀取,另乙個執行緒寫入的read-write conflick
* 乙個執行緒寫入,另乙個執行緒寫入的write-write conflick
* 乙個執行緒讀取,另乙個執行緒也在讀取不會產生衝突
* * 當執行緒想要獲取讀取鎖定時:
* -->已經有執行緒在執行寫入,則等待。不等待,則發生read-write conflick
* -->已經有執行緒在讀取,則不需要等待。不存在read-read conflick
* * 當執行緒想要獲取寫入鎖定時:
* -->已經有執行緒在執行寫入,則等待。不等待,則發生write-write conflick
* -->已經有執行緒在執行讀取,則等待。不等待,則發生read-write conflick
--->利用同時(讀取)不會引起資料衝突的特性,提高系統的效能
--->適合讀取操作繁重時
--->適合讀取操作比寫入操作繁重時
三:read-write lock pattern思考
--->
**階說明
--->
讀寫鎖
/***view code*/package
com.benxq.thread8;
/*** 讀寫鎖
* created by qucf on 2023年10月23日. */
public
class
readwritelock
readinteger++;
}//釋放讀取鎖的方法
public
synchronized
void
readunlock()
//獲取寫入鎖定的方法
public
synchronized
void writelock() throws
interruptedexception
} finally
//寫入執行緒+1
writeinteger++;
}//釋放寫入鎖
public
synchronized
void
writeunlock()
}
資料類
/***view code*/package
com.benxq.thread8;
/*** 資料類
* 持有公共資料+改公共資料的讀寫鎖
* created by qucf on 2023年10月23日. */
public
class
data
}public
readwritelock getlock()
//讀取資料的方法
public string read() throws
interruptedexception
finally
}//寫入操作
public
void write(string a) throws
interruptedexception
finally
}//真正的寫操作
public
void
dowrite(string a)}}
讀執行緒
/***view code*/package
com.benxq.thread8;
/*** 讀執行緒
* created by qucf on 2023年10月23日. */
public
class readthread implements
runnable
@override
public
void
run()
catch
(interruptedexception e) }}
}
寫執行緒
/***view code*/package
com.benxq.thread8;
/*** 寫執行緒
* created by qucf on 2023年10月23日. */
public
class writethread implements
runnable
@override
public
void
run()
} catch
(interruptedexception e) }}
}
主線程
/***view code*/package
com.benxq.thread8;
/*** created by qucf on 2023年10月23日. */
public
class
test
}
多執行緒學習 讀寫鎖
讀寫鎖 reentrantreadwritelock 具有互斥排他效果,即同一時間只有乙個執行緒在執行鎖後面的任務,這種效率比較搞。讀鎖也稱為共享鎖,寫鎖也稱為排他鎖。多個讀鎖之間不互斥,讀鎖與寫鎖互斥,寫鎖與寫鎖互斥。在沒有執行緒thread進行寫入操作時,進行讀取操作的多個執行緒都可以獲取讀鎖,...
多執行緒之讀寫鎖
之前沒真正使用讀寫鎖,看到別人對讀寫鎖的解釋總感覺一頭霧水。今天親自敲 實驗之後,才明了,原來如此。網上沒有一篇文章是能描述出自己理解的樣子,所以將自己的思路記下來。先提出疑問,邊自答邊找思路,有了思路,再回頭去執行一下 就清晰明了了。如果你急著想要一句話概括讀寫鎖,那我會告訴你 讀鎖是加在讀方法裡...
多執行緒 讀寫鎖模式
讀寫鎖 1.寫寫加鎖 2.讀寫加鎖 3.寫都加鎖 4.讀讀不加鎖 public class readwritelock this readingreaders 因為使用了while,所以,當while結束的時候,說明寫完成了.可以讀取資料了.finally public synchronized v...