我使用Java 6与JBOSS7和JPA2 + Hibernate。对于我的客户机,我提供了一个REST。
我关心的是如何有效地确保没有资源同时修改。应该经常发生,但万一发生,我想确保正确的处理。
到目前为止,我的方法是:
Map<String, ReentrantLock>来存储锁。(我的in总是UUID的)如果地图中缺少锁,就会根据需要创建锁。在这种方法中,我喜欢并发访问将被阻塞,并且我可以控制其他线程试图锁定资源的时间。你推荐哪一种?还是有更好的方法?
发布于 2012-09-04 06:43:32
SELECT FOR UPDATE(大多数DBMS支持)来解释获取行锁。确保您找到了一个方案,锁是按照一致的顺序获得的,以避免死锁。2-3之间的选择取决于用例,例如,是否预期争用会很高,或者是否容易重试失败的事务。
https://stackoverflow.com/questions/12257888
复制相似问题