代码拉取完成,页面将自动刷新
基于zk手写一个分布式锁,使用起来简单方便。
lsj-zk-lock:核心实现。
lsj-zk-lock-spring-boot-starter:整合springboot
lsj-zk-lock-test:使用demo
lsj-zk-lock
、lsj-zk-lock-spring-boot-starter
通过 mvn install
命令安装到本地仓库。<dependency>
<groupId>cn.lsj</groupId>
<artifactId>lsj-zk-lock-spring-boot-starter</artifactId>
<version>2.4.2</version>
</dependency>
spring:
zk:
dataSource:
url: "localhost"
port: 2181
locks:
- zkPath: "/test/lock"
lockName: "countLock"
# 获取锁失败时,进入等待的时间,等待结束将重新尝试获取锁
timeout: 5000
- zkPath: "/test2/lock"
lockName: "lock"
timeout: 5000
@GlobalLock
注解,指定要使用那个lock@GetMapping("test2")
@GlobalLock("countLock")
public String test2() {
// 业务代码
return "";
}
@Qualifier
注解,指定要使用那个lock@RestController
public class TestController {
int count = 0;
@Resource
@Qualifier("lock")
private ReentrantLock lock;
@Resource
@Qualifier("countLock")
private ReentrantLock countLock;
@GetMapping("test")
public String test() {
countLock.lock();
try{
for (int i = 0; i < 10000; i++) {
count++;
}
} finally {
countLock.unlock();
}
return String.valueOf(count);
}
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。