分布式锁
@Scheduled是加了定时任务,仅为场景使用分布式锁。
1、配置pom文件
com.baomidoulock4j-redisson-spring-boot-starter2.2.2
2、test测试代码
import com.baomidou.lock.LockInfo;
import com.baomidou.lock.LockTemplate;
import com.baomidou.lock.executor.RedissonLockExecutor;
import lombok.extern.slf4j.Slf4j;
import org.junit.Test;
import org.springframework.scheduling.annotation.Scheduled;import javax.annotation.Resource;
import java.time.LocalDate;/*** @author: samxie* @create: 2022/5/27* @Description:* @FileName: TimeLockTest* @History:* @自定义内容:*/
@Slf4j
public class TimeLockTest {@Resourceprivate LockTemplate lockTemplate;@Scheduled(cron = "0/1 0/5 * * * ?")@Scheduled(fixedRate = 5 * 60 * 100L)public void sysncGoalImplemendtationStartUpd() {//获取锁LockInfo lockInfo = null;try {/*** String key, long expire, long acquireTimeout, Class extends LockExecutor> executor*/String key = "goalImplTaskLock";long expire = 50000;//加锁lockInfo = this.lockTemplate.lock(key, expire, 0L, RedissonLockExecutor.class);LocalDate now = LocalDate.now();System.out.println("===========进入实现业务");//要干的业务service...} catch (Throwable throwable) {log.error("==error:{}", throwable);} finally {//释放锁this.lockTemplate.releaseLock(lockInfo);}}@Testpublic void test() {sysncGoalImplemendtationStartUpd();}
}