我目前在自动售货机项目中需要使用悲观锁。当有多人选择商品时,我希望使用悲观锁防止两个人同时选择同一件商品。我的项目是Java、Spring Boot。
我能否通过一个方法调用来执行"悲观锁"的加锁过程,并在另一个方法调用中以某种方式解除"悲观锁"?("加锁"过程在用户确认商品时执行,"解锁"过程在用户支付商品或希望重新选择商品时执行)还是有更好的解决方案?
我目前在自动售货机项目中需要使用悲观锁。当有多人选择商品时,我希望使用悲观锁防止两个人同时选择同一件商品。我的项目是Java、Spring Boot。
我能否通过一个方法调用来执行"悲观锁"的加锁过程,并在另一个方法调用中以某种方式解除"悲观锁"?("加锁"过程在用户确认商品时执行,"解锁"过程在用户支付商品或希望重新选择商品时执行)还是有更好的解决方案?
Lock
API允许一个方法获取锁并允许另一个方法释放锁。Lock
实现可能允许一个线程获取锁,而另一个线程释放锁。但是ReentrantLock
不行。每个Lock
实现的javadoc都应该记录此方面的信息。
Lock
。它们旨在为某些代码块提供互斥,从而控制对共享数据结构的访问和更新。Lock
API,您是指Java语言中的@Lock
注释还是标准Lock
? - Power_tilejava.util.concurrent.locks.Lock
但我认为 @Lock
也不对。它还在代码区域上提供了互斥。 - Stephen Cjava.util.concurrent.locks
更适用于锁定线程,而不是锁定数据库。 - Power_tile