[問題] ReadWriteLock 用在map上的每個field

看板java作者 (e :) y)時間18年前 (2007/09/29 19:59), 編輯推噓3(301)
留言4則, 2人參與, 最新討論串1/4 (看更多)
(最進有不少cocurrency的問題f@@) 後來想想我的問題主要還是在read/write sync 上 在網路上找找 發現 java.util.concurrent.locks.ReentrantReadWriteLock 可以很方便的作到read-write lock (應該比自己寫安全,又比synchronized有彈性用) 但是我在網路上看到的範例都是把ReadWriteLock 用在整個map上 (可同時讀, 但write是絕對exclusive) 我異想天開說 那可不可以把map裡每個field(key-value pair) 都指定一個個別的ReadWriteLock 這樣在write某一個field時 就不會block住其他field的讀寫... 每個field又可以作到read write sync (當然先決條件是每個field都絕對沒有關係) 只是不知道這樣實不實際 有提升效率嗎 還是太多lock object會有問題 不知道有人有類似的經驗 或有什麼見解嗎 "理論上"看起來不錯 還沒有測試過... -- PLUR -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 79.210.96.247

09/29 23:46, , 1F
上上篇不就和你現在說的很像了嗎?
09/29 23:46, 1F

09/29 23:48, , 2F
但事實上 write 的時候會修改容器屬性,這必須防止其他人寫入
09/29 23:48, 2F

09/30 00:26, , 3F
值得一提的是 這樣是可以做的 但是要考慮你讀寫頻率
09/30 00:26, 3F

09/30 00:29, , 4F
如果你寫的頻率很頻繁 這樣的作法會令你要求兩次W Lock
09/30 00:29, 4F
文章代碼(AID): #16_ZuWh0 (java)
討論串 (同標題文章)
文章代碼(AID): #16_ZuWh0 (java)