我有很多客户Ai(A1,...,An),其中每个人都执行操作X.服务器B执行操作Y.但只有在没有人执行X时才能执行Y.
所以我想到了互斥锁:每个客户都有自己的锁李。这对客户来说没问题,但对于服务器B来说会很糟糕,如下所示:
synchronized(L1){
synchronized(L2){
...
}
}
对于这类问题有没有更好的解决方案?
答案 0 :(得分:1)
您可以尝试在所有节点之间共享ReadWriteLock(ReentrantReadWriteLock)。服务器应获取写锁定并阻止所有客户端执行X.客户端应获取读锁定而不阻止其他客户端。