分布式锁
@Scheduled是加了定时任务,仅为场景使用分布式锁。
1、配置pom文件
<!-- redis分布式锁 -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>lock4j-redisson-spring-boot-starter</artifactId>
<version>2.2.2</version>
</dependency>
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 {
@Resource
private 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);
}
}
@Test
public void test() {
sysncGoalImplemendtationStartUpd();
}
}