讀寫鎖(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...