多執行緒學習 讀寫鎖

2021-09-03 02:46:37 字數 1423 閱讀 6316

讀寫鎖(reentrantreadwritelock):具有互斥排他效果,即同一時間只有乙個執行緒在執行鎖後面的任務,這種效率比較搞。

讀鎖也稱為共享鎖,寫鎖也稱為排他鎖。多個讀鎖之間不互斥,讀鎖與寫鎖互斥,寫鎖與寫鎖互斥。在沒有執行緒thread進行寫入操作時,進行讀取操作的多個執行緒都可以獲取讀鎖,而進行寫入操作的執行緒只有在獲取寫鎖後才能進行寫入操作。

同一時刻只允許乙個執行緒進行寫入操作,多個執行緒可以同時進行讀取操作。

案例:讀讀共享:允許多個執行緒同時執行鎖後面的**。

class myreadservice  finally 

} catch (interruptedexception e)

}}public class test

};thread b = new thread()

};a.setname("a");

a.start();

b.setname("b");

b.start();

}}

結果:

獲得讀鎖b 1544782756369

獲得讀鎖a 1544782756369

寫寫互斥:同一時間只允許乙個執行緒執行lock()方法後面的**
class mywriteservice  finally 

} catch (interruptedexception e)

}}public class test

};thread b = new thread()

};a.setname("a");

a.start();

b.setname("b");

b.start();

}}

結果:

獲得寫鎖b 1544782934185

獲得寫鎖a 1544782944185

讀寫互斥:
class service3  finally 

} catch (interruptedexception e)

}public void write() finally

} catch (interruptedexception e)

}}public class test

};thread b = new thread()

};a.setname("a");

a.start();

b.setname("b");

b.start();

}}

結果:

獲得讀鎖 a 1544783060241

獲得寫鎖 b 1544783070242

多執行緒學習之七讀寫鎖

read write lock pattern 讀寫 一 read write lock pattern的參與者 讀寫鎖 資料 共享資源 讀執行緒 寫執行緒 二read write lock pattern模式什麼時候使用 為了多線執行緒環境下保護資料安全,我們必須避免的衝突 乙個執行緒讀取,另乙個...

多執行緒之讀寫鎖

之前沒真正使用讀寫鎖,看到別人對讀寫鎖的解釋總感覺一頭霧水。今天親自敲 實驗之後,才明了,原來如此。網上沒有一篇文章是能描述出自己理解的樣子,所以將自己的思路記下來。先提出疑問,邊自答邊找思路,有了思路,再回頭去執行一下 就清晰明了了。如果你急著想要一句話概括讀寫鎖,那我會告訴你 讀鎖是加在讀方法裡...

多執行緒 讀寫鎖模式

讀寫鎖 1.寫寫加鎖 2.讀寫加鎖 3.寫都加鎖 4.讀讀不加鎖 public class readwritelock this readingreaders 因為使用了while,所以,當while結束的時候,說明寫完成了.可以讀取資料了.finally public synchronized v...