有許多線程這在同一張地圖,每一個代碼上的元素工作,例如:的Java:這相同的元素上工作鎖定功能
THREAD_1 works on an element with code "1234"
THREAD_2 works on an element with code "1234"
THREAD_3 works on an element with code "9876"
etc...
元素不是永久的,即THREAD_1可能會刪除元素「1234」,然後再次插入。我想要的是,雖然THREAD_1正在處理元素「1234」(也將其刪除),但THREAD_2必須等待。
有沒有辦法做到這一點?
一種可能的解決方案可能是在一個HashMap中插入一個僞造元件,再與該元件上的「同步」子句強制的同步。你有什麼想法? (顯然是假的元素會保留在還如果一個線程移除了相關的代碼元素地圖)......
該解決方案應該可以工作。在整個地圖上,同步條款不太好,這可能是一個瓶頸。不過謝謝,我認爲迄今爲止這是最好的解決方案......奇怪的是沒有命名的鎖...... – Massimo
它不應該是一個瓶頸太大,因爲鎖內的所有操作都非常快。由於你顯然正在使用一些HTTP相關的東西,我懷疑你在「工作」塊中所做的任何事情都要像執行同步塊的內容一樣多。因此,這些同步塊應該不會對性能產生任何可衡量的影響。 – LordOfThePigs
我同意你的意見。它工作(顯然),它似乎不是一個大瓶頸;)謝謝你! – Massimo