java ReadWriteLock 鎖

       對象的方法中一旦加入synchronized修飾,則任什麼時候刻只能有一個線程訪問synchronized修飾的方法。假設有個數據對象擁有寫方法與讀方法,多線程環境中要想保證數據的安全,需對該對象的讀寫方法都要加入 synchronized同步塊。這樣任何線程在寫入時,其它線程沒法讀取與改變數據;若是有線程在讀取時,其餘線程也沒法讀取或寫入。這種方式在寫入操做遠大於讀操做時,問題不大,而當讀取遠遠大於寫入時,會形成性能瓶頸,由於此種狀況下讀取操做是能夠同時進行的,而加鎖操做限制了數據的併發讀取。安全

      在多線程開發中,常常會出現一種狀況,咱們但願讀寫分離。就是對於讀取這個動做來講,能夠同時有多個線程同時去讀取這個資源,可是對於寫這個動做來講,只能同時有一個線程來操做,並且同時,當有一個寫線程在操做這個資源的時候,其餘的讀線程是不能來操做這個資源的,這樣就極大的發揮了多線程的特色,能很好的將多線程的能力發揮出來。多線程

ReadWriteLock解決了當寫操做時,其餘線程沒法讀取或寫入數據,而當讀操做時,其它線程沒法寫入數據,但卻能夠讀取數據併發

相關文章
相關標籤/搜索