作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这是一个有点组合的问题:
假设我有多个线程需要锁定用户 ID 等值。例如,我想隔离与给定玩家相关的数据库操作,以便与 ID 5 相关的操作可以与 ID 7 上的操作同时运行,但如果正在运行 ID 5 上的操作,则必须运行 ID 5 上的另一个操作等待。我之前使用过此示例中的代码:http://illegalargumentexception.blogspot.com/2008/04/java-synchronizing-on-transient-id.html但想要一些 Java 核心的东西,并且可以使用泛型来轻松地允许它与其他数据类型(例如 int 或 long)一起使用。
我如何选择使用 AND 或 OR 逻辑锁定其中两种变量?例如,假设我有一个消息系统,客户端可以在其中互相发送消息,但我想让线程在任一 ID 上阻塞?换句话说,如果我想在 ID 5 和 7 之间执行操作,我希望等待 5 或 7 上的任何正在运行的操作先完成后再解锁。
感谢您的指点!
最佳答案
我自己没有做过类似的事情,但我会构建一个将 id 映射到 Lock
的哈希表。事实上 id 是基元应该不是问题,您可以使用 Integer
或 Long
变体作为哈希表中的键。
有关 Lock
的更多信息的
关于java - 同步 int、long 或 String 值以及 AND/OR 选项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16389630/
我是一名优秀的程序员,十分优秀!