共享锁和排它锁的用法
生活随笔
收集整理的這篇文章主要介紹了
共享锁和排它锁的用法
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
共享鎖和排它鎖
- 排它鎖,又稱為獨(dú)占鎖、獨(dú)享鎖
- 共享鎖,又稱為讀鎖,獲得共享鎖之后,可以查看但無法修改和刪除數(shù)據(jù),其他線程此時(shí)也可以獲取到共享鎖,也可以查看,但無法修改和刪除數(shù)據(jù)
- 共享鎖和排它鎖的典型是讀寫鎖ReentrantReadWriteLock,其中讀鎖是共享鎖,寫鎖是排它鎖
讀寫鎖的作用
- 在沒有讀寫鎖之前,我們?cè)O(shè)定使用ReentrantLock,那么雖然我們保證了線程安全,但是也浪費(fèi)了資源:多個(gè)讀操作同時(shí)進(jìn)行,并沒有線程安全問題
- 在讀的地方使用讀鎖,在寫的地方使用寫鎖,靈活控制,如果沒有寫鎖的情況下,讀是無阻塞的,提高了程序的執(zhí)行效率
讀寫鎖的規(guī)則
- 多個(gè)線程只申請(qǐng)讀鎖,都可以申請(qǐng)到
- 如果有一個(gè)線程已經(jīng)占用了讀鎖,則此時(shí)其他線程如果要申請(qǐng)寫鎖,則申請(qǐng)寫鎖的線程會(huì)一直等待釋放讀鎖
- 如果有一個(gè)線程已經(jīng)占用了寫鎖,則此時(shí)其他線程如果申請(qǐng)寫鎖或者讀鎖,則申請(qǐng)的線程會(huì)一直等待釋放寫鎖
- 一句話總結(jié):要么是一個(gè)或多個(gè)線程同時(shí)有讀鎖,要么是一個(gè)線程有寫鎖,但是兩者不會(huì)同時(shí)出現(xiàn)
- 換一種思路更容易理解:讀寫鎖只是一把鎖,可以通過兩種方式鎖定:讀鎖定和寫鎖定。讀寫鎖可以同時(shí)被一個(gè)或多個(gè)線程讀鎖定,也可以被單一線程寫鎖定。但是永遠(yuǎn)不能同時(shí)對(duì)這把鎖進(jìn)行讀鎖定和寫鎖定
?
總結(jié)
以上是生活随笔為你收集整理的共享锁和排它锁的用法的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 代码演示:先来后到的特例、优劣、源码分析
- 下一篇: 深入理解交互思想