同步块:锁定很多对象?

Synchronized block: lock many objects?

我有很多客户 Ai (A1,...,An) 每个人都做动作 X。还有一个服务器 B 做动作 Y。但是 Y 只有在没有人执行的情况下才能完成十、

于是我想到了互斥锁:每个client都有自己的锁li。对客户端没问题,但对服务器B来说就很可怕了,像这样:

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

这种问题有更好的解决办法吗?

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