簡體   English   中英

同步塊:鎖定許多對象?

[英]Synchronized block: lock many objects?

我有許多客戶端Ai(A1,...,An),每個客戶端都執行動作X。服務器B則執行動作Y。但是只有在沒有人執行X的情況下,Y才能執行。

所以我想到了互斥鎖:每個客戶端都有一個自己的鎖Li。 對於客戶端來說這沒問題,但是對於服務器B來說將是可怕的,如下所示:

synchronized(L1){
    synchronized(L2){
        ...
    }
}

對於這種問題有更好的解決方案嗎?

您可以嘗試在所有節點之間共享的ReadWriteLock(ReentrantReadWriteLock)。 服務器應獲取寫鎖定,並將阻止所有客戶端執行X。並且客戶端應獲取讀鎖定,而不阻止其他客戶端。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM