TaskHandleServiceImpl.java
@Slf4j
@Service
public class TaskHandleServiceImpl implements ITaskHandleService {
@Override
public void drawReward(SysUser sysUser, DrawTaskBeanBo drawTaskBeanBo) {
RLock lock = redissonClusterClient.getLock(LockConstants.ACTIVE_NUM_LOCK);
boolean isLock = false;
if (!Thread.currentThread().isInterrupted()) {
try {
isLock = lock.tryLock(0, 30L, TimeUnit.SECONDS);
log.info("Sync activeNum data - acquire the distributed lock:{}", isLock);
if (!isLock) {
return null;
}
//执行业务逻辑
dowork(sysUser,drawTaskBeanBo);
} catch (Exception e) {
log.error("获取分布锁 {} 时: {} 出现异常", LockConstants.ACTIVE_NUM_LOCK, e);
} finally {
try {
if(lock.isLocked()){
if(lock.isHeldByCurrentThread()){
log.info("Thread:{} release distributed lock success", Thread.currentThread().getName() +":"+Thread.currentThread().getId());
lock.unlock();
}
}
} catch (Exception e) {
log.warn("Sync activeNum data - unlock the distributed lock:{}", e);
}
log.info("Sync activeNum data...... {}", LocalDateTime.now());
}
}
}
}