TaskHandleServiceImpl.java

    1. @Slf4j
    2. @Service
    3. public class TaskHandleServiceImpl implements ITaskHandleService {
    4. @Override
    5. public void drawReward(SysUser sysUser, DrawTaskBeanBo drawTaskBeanBo) {
    6. RLock lock = redissonClusterClient.getLock(LockConstants.ACTIVE_NUM_LOCK);
    7. boolean isLock = false;
    8. if (!Thread.currentThread().isInterrupted()) {
    9. try {
    10. isLock = lock.tryLock(0, 30L, TimeUnit.SECONDS);
    11. log.info("Sync activeNum data - acquire the distributed lock:{}", isLock);
    12. if (!isLock) {
    13. return null;
    14. }
    15. //执行业务逻辑
    16. dowork(sysUser,drawTaskBeanBo);
    17. } catch (Exception e) {
    18. log.error("获取分布锁 {} 时: {} 出现异常", LockConstants.ACTIVE_NUM_LOCK, e);
    19. } finally {
    20. try {
    21. if(lock.isLocked()){
    22. if(lock.isHeldByCurrentThread()){
    23. log.info("Thread:{} release distributed lock success", Thread.currentThread().getName() +":"+Thread.currentThread().getId());
    24. lock.unlock();
    25. }
    26. }
    27. } catch (Exception e) {
    28. log.warn("Sync activeNum data - unlock the distributed lock:{}", e);
    29. }
    30. log.info("Sync activeNum data...... {}", LocalDateTime.now());
    31. }
    32. }
    33. }
    34. }