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
資料類(公共資源)
讀線程
寫線程
測試類
列印結果
【寫入線程yk】寫入0*yk
【寫入線程shj】寫入0*hj
【寫入線程shl】寫入0*hl
[讀取線程sxf] 讀取資料為:**
[讀取線程sxy] 讀取資料為:**
[讀取線程sxs] 讀取資料為:**
【寫入線程shj】寫入1*hj
[讀取線程sxs] 讀取資料為:0*hj
[讀取線程sxy] 讀取資料為:0*hj
[讀取線程sxf] 讀取資料為:0*hj
【寫入線程shj】寫入2*hj
[讀取線程sxf] 讀取資料為:1*hj
[讀取線程sxy] 讀取資料為:1*hj
[讀取線程sxs] 讀取資料為:1*hj
【寫入線程shl】寫入1*hl
【寫入線程shj】寫入3*hj
【寫入線程shl】寫入2*hl
【寫入線程shj】寫入4*hj
【寫入線程shl】寫入3*hl
【寫入線程shj】寫入5*hj
【寫入線程shl】寫入4*hl