如何在方法参数值上提供同步?使用“相同”参数值A的所有方法调用都应该同步。即使使用A的调用已经在等待,具有不同参数值的方法调用(例如B)也可以访问。B的下一个并发调用还必须等待第一个B被释放。我的用例:我想在ID级别上同步对JPA实体的访问,但要避免悲观锁定,因为我需要某种队列。用于锁定的“键”旨在作为实体ID-实际上是Java Long类型。protected void entityLockedAccess(SomeEntity myEntity) { //getId() returns different Long objects so the lock does not work synchronized (myEntity.getId()) { //the critical section ... }}我阅读了有关锁定对象的信息,但不确定如何适合我的情况。在顶层,我想管理对执行关键代码的应用程序的特定REST调用。
3 回答
![?](http://img1.sycdn.imooc.com/54586453000163bd02200220-100-100.jpg)
慕姐4208626
TA贡献1852条经验 获得超7个赞
池化并可能重用的对象不应用于同步。如果是这样,它可能导致无关的线程因无用的堆栈跟踪而死锁。
具体而言,String
文字,和盒装基元如Integers
应NOT来,因为它们合并并重复使用作为锁定对象。
这个故事是更糟糕的Boolean
对象,因为只有两个实例Boolean
,Boolean.TRUE
并且Boolean.FALSE
每一个使用Boolean类将参照两个中的一个。
我阅读了有关锁定对象的信息,但不确定如何适合我的情况。在顶层,我想管理对执行关键代码的应用程序的特定REST调用。
您的数据库将照顾并发写入和其他事务性问题。您需要做的就是使用事务。
添加回答
举报
0/150
提交
取消