当需要资源竞争时,需要用到锁。在集群环境下,不能用jvm锁。
@Autowired
private LockComponent lockComponent;
if (lockComponent.tryLock(LockConst.TAKE_ORDER_LOCK + userId, 20)) {
//加上乐观锁,防止用户重复提交订单
lockComponent.release(LockConst.TAKE_ORDER_LOCK + userId);
public boolean tryLock(String key, Integer timeoutSec) {
public boolean lockBlock(String key, Integer timeoutSec) {
特别注意:阻塞锁本质是自旋锁,对于竞争过大(线程过多),请不要使用。