同步块:锁定很多对象?

时间:2016-10-05 09:38:41

标签: java mutex semaphore synchronized locks

我有很多客户Ai(A1,...,An),其中每个人都执行操作X.服务器B执行操作Y.但只有在没有人执行X时才能执行Y.

所以我想到了互斥锁:每个客户都有自己的锁李。这对客户来说没问题,但对于服务器B来说会很糟糕,如下所示:

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

对于这类问题有没有更好的解决方案?

1 个答案:

答案 0 :(得分:1)

您可以尝试在所有节点之间共享ReadWriteLock(ReentrantReadWriteLock)。服务器应获取写锁定并阻止所有客户端执行X.客户端应获取读锁定而不阻止其他客户端。