这是一个有点组合的问题:
假设我有多个线程需要锁定用户 ID 等值。例如,我想隔离与给定玩家相关的数据库操作,以便与 ID 5 相关的操作可以与 ID 7 上的操作同时运行,但如果 ID 5 上的操作正在运行,则 ID 5 上的另一个操作将不得不等待。我以前使用过此示例中的代码:http: //illegalargumentexception.blogspot.com/2008/04/java-synchronizing-on-transient-id.html但想要 Java 的核心并且可以使用泛型轻松允许这将与其他数据类型(如整数或长整数)一起使用。
我将如何选择使用 AND 或 OR 逻辑锁定其中两种变量?例如,假设我有一个消息传递系统,客户端可以在其中相互发送消息,但我想让线程阻塞任一 ID?换句话说,如果我想在 ID 5 和 7 之间进行操作,我想在解锁之前等待任何在 5 或 7 上运行的操作首先完成。
感谢您的任何指点!