[英]Locking in Java EE Application
我正在使用Java EE 6和JBOSS7以及JPA2 + Hibernate。 对于我的客户,我提供了一个REST API。
我关心的是如何有效地确保没有资源同时被修改。 应该经常发生,但如果发生这种情况,我想确保正确处理。
到目前为止我的方法:
Map<String, ReentrantLock>
以存储锁。 (我的ID总是UUID
)如果在地图中丢失,则按需创建锁。 在这种方法中,我喜欢并发访问将被阻止,我可以控制其他线程尝试锁定资源的时间。
使用JPA2乐观锁定。
你会推荐哪一个? 还是有更好的方法?
SELECT FOR UPDATE
(大多数DBMS支持)明确获取行锁。 确保你弄清楚一个方案是以一致的顺序获取锁,以避免死锁。 2-3之间的选择取决于用例,例如,如果争用预期很高或者是否很容易重试失败的事务。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.