Java輕量級(jí)類隔離框架 SOFAArk Project v2.3.0
42.5MB / 01-19
SpringBlade微服務(wù)開發(fā)平臺(tái) v4.4.0
197KB / 01-30
Diboot輕代碼開發(fā)平臺(tái) v2.11.0
1.3MB / 07-20
RuoYi-activiti工作流平臺(tái)源碼 v4.1
24.79MB / 07-19
RuoYi若依權(quán)限管理系統(tǒng) v4.7.9
4.12MB / 06-28
Java Struts2漏洞復(fù)現(xiàn)工具
98KB / 06-26
java操作excel的jar包(jxl.jar包 源碼)
610KB / 06-26
springboot整合QuartJob實(shí)現(xiàn)定時(shí)器實(shí)時(shí)管理源代碼
29KB / 06-26
SOFABoot開源框架 v3.24.0
587KB / 08-31
基于SSM的應(yīng)急資源管理系統(tǒng)源碼 v1.0
80.7MB / 05-25
-
Pinpoint應(yīng)用性能管理工具 v3.0.2 java源碼 / 18.8MB
-
Presto大數(shù)據(jù)查詢引擎 v0.292 java源碼 / 10.89MB
-
-
-
Zotero文獻(xiàn)管理工具 v7.0.15 java源碼 / 6.8MB
-
Logstash日志管理系統(tǒng) v8.17.4 java源碼 / 18.9MB
-
-
Mall4j商城系統(tǒng) v3.4 java源碼 / 14.2MB
-
-
詳情介紹
lock4j是一個(gè)分布式鎖組件,其提供了多種不同的支持以滿足不同性能和環(huán)境的需求。
立志打造一個(gè)簡(jiǎn)單但富有內(nèi)涵的分布式鎖組件。
特性
1、簡(jiǎn)單易用,功能強(qiáng)大,擴(kuò)展性強(qiáng)。
2、支持redission,redisTemplate,zookeeper。可混用,支持?jǐn)U展。
如何使用
1、引入相關(guān)依賴(支持同時(shí)存在,不同方法不同鎖實(shí)現(xiàn))。
<dependencies>
<!--若使用redisTemplate作為分布式鎖底層,則需要引入-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>lock4j-redis-template-spring-boot-starter</artifactId>
<version>${latest.version}</version>
</dependency>
<!--若使用redisson作為分布式鎖底層,則需要引入-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>lock4j-redisson-spring-boot-starter</artifactId>
<version>${latest.version}</version>
</dependency>
<!--若使用zookeeper作為分布式鎖底層,則需要引入-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>lock4j-zookeeper-spring-boot-starter</artifactId>
<version>${latest.version}</version>
</dependency>
</dependencies>
2、根據(jù)底層需要配置redis或zookeeper。
spring:
redis:
host: 127.0.0.1
...
coordinate:
zookeeper:
zkServers: 127.0.0.1:2181,127.0.0.1:2182,127.0.0.1:2183
3、在需要分布式的地方使用Lock4j注解。
@Service
//完全配置,支持spel
public class DemoService {//默認(rèn)獲取鎖超時(shí)3秒,30秒鎖過(guò)期
@Lock4j
public void simple() {
//do something
}
@Lock4j(keys = {"#user.id", "#user.name"}, expire = 60000, acquireTimeout = 1000)
public User customMethod(User user) {
return user;
}
}
高級(jí)使用
1、配置全局默認(rèn)的獲取鎖超時(shí)時(shí)間和鎖過(guò)期時(shí)間。
lock4j:
acquire-timeout: 3000 #默認(rèn)值3s,可不設(shè)置
expire: 30000 #默認(rèn)值30s,可不設(shè)置
primary-executor: com.baomidou.lock.executor.RedisTemplateLockExecutor #默認(rèn)redisson>redisTemplate>zookeeper,可不設(shè)置
lock-key-prefix: lock4j #鎖key前綴, 默認(rèn)值lock4j,可不設(shè)置
acquire-timeout 可以理解為排隊(duì)時(shí)長(zhǎng),超過(guò)這個(gè)時(shí)才就退出排隊(duì),拋出獲取鎖超時(shí)異常。
為什么必須要有這個(gè)參數(shù)?現(xiàn)實(shí)你會(huì)一直排隊(duì)等下去嗎?所有人都一直排隊(duì)有沒(méi)有問(wèn)題 ?
expire 鎖過(guò)期時(shí)間 。 主要是防止死鎖。 建議估計(jì)好你鎖方法運(yùn)行時(shí)常,正常沒(méi)有復(fù)雜業(yè)務(wù)的增刪改查最多幾秒,留有一定冗余,10秒足夠。 我們默認(rèn)30秒是為了兼容絕大部分場(chǎng)景。
2、自定義執(zhí)行器。
@Service
public class DemoService {//可在方法級(jí)指定使用某種執(zhí)行器,若自己實(shí)現(xiàn)的需要提前注入到Spring。
@Lock4j(executor = RedissonLockExecutor.class)
public Boolean test() {
return "true";
}
}
3、自定義鎖key生成器。
默認(rèn)的鎖key生成器為 com.baomidou.lock.DefaultLockKeyBuilder 。
@Component
public class MyLockKeyBuilder extends DefaultLockKeyBuilder {@Override
public String buildKey(MethodInvocation invocation, String[] definitionKeys) {
String key = super.buildKey(invocation, definitionKeys);
// do something
return key;
}
}
4、自定義鎖獲取失敗策略。
默認(rèn)的鎖獲取失敗策略為 com.baomidou.lock.DefaultLockFailureStrategy 。
@Component
public class MyLockFailureStrategy implements LockFailureStrategy {@Override
public void onLockFailure(String key, long acquireTimeout, int acquireCount) {
// write my code
}
}
5、手動(dòng)上鎖解鎖。
@Service
public class ProgrammaticService {
@Autowired
private LockTemplate lockTemplate;public void programmaticLock(String userId) {
// 各種查詢操作 不上鎖
// ...
// 獲取鎖
final LockInfo lockInfo = lockTemplate.lock(userId, 30000L, 5000L, RedissonLockExecutor.class);
if (null == lockInfo) {
throw new RuntimeException("業(yè)務(wù)處理中,請(qǐng)稍后再試");
}
// 獲取鎖成功,處理業(yè)務(wù)
try {
System.out.println("執(zhí)行簡(jiǎn)單方法1 , 當(dāng)前線程:" + Thread.currentThread().getName() + " , counter:" + (counter++));
} finally {
//釋放鎖
lockTemplate.releaseLock(lockInfo);
}
//結(jié)束
}
}
6、指定時(shí)間內(nèi)不釋放鎖(限流)
默認(rèn)的鎖獲取失敗策略為 com.baomidou.lock.DefaultLockFailureStrategy 。
@Service
public class DemoService {// 用戶在5秒內(nèi)只能訪問(wèn)1次
@Lock4j(keys = {"#user.id"}, acquireTimeout = 0, expire = 5000, autoRelease = false)
public Boolean test(User user) {
return "true";
}
}
下載地址
人氣源碼
若依后臺(tái)管理系統(tǒng) RuoYi v4.7.8
CryptoJS加密庫(kù)(crypto.js) v4.2.0
JetLinks開源物聯(lián)網(wǎng)平臺(tái)源碼 v2.2.0
Jeepay開源支付系統(tǒng) v2.4.0
JSH_ERP 開源版J2EE進(jìn)銷存系統(tǒng)代碼源碼 v1.0.2
QQ 聊天機(jī)器人小薇(XiaoV) v2.2.2
ECharts JavaScript圖表庫(kù) v5.6.0
因酷時(shí)代(inxedu)在線教育系統(tǒng) V2.0.6
Javashop B2C開源電商系統(tǒng) v6.3.2
iBizEAM開源設(shè)備資產(chǎn)管理系統(tǒng)源碼 v1.0
相關(guān)文章
-
Java輕量級(jí)類隔離框架 SOFAArk Project v2.3.0
SOFAArk 是一款基于 Java 實(shí)現(xiàn)的動(dòng)態(tài)熱部署和輕量級(jí)類隔離框架,由螞蟻集團(tuán)開源貢獻(xiàn),主要提供應(yīng)用模塊的動(dòng)態(tài)熱部署和類隔離能力。歡迎需要的朋友下載使用...
-
SpringBlade微服務(wù)開發(fā)平臺(tái) v4.4.0
SpringBlade 是一個(gè)由商業(yè)級(jí)項(xiàng)目升級(jí)優(yōu)化而來(lái)的SpringCloud分布式微服務(wù)架構(gòu)、SpringBoot單體式微服務(wù)架構(gòu)并存的綜合型項(xiàng)目,采用Java8 API重構(gòu)了業(yè)務(wù)代碼,完全遵循阿里巴...
-
Diboot輕代碼開發(fā)平臺(tái) v2.11.0
Diboot輕代碼開發(fā)平臺(tái)是一個(gè)面向開發(fā)人員的低代碼開發(fā)平臺(tái),將重復(fù)性的工作自動(dòng)化,提高質(zhì)量、效率、可維護(hù)性...
-
RuoYi-activiti工作流平臺(tái)源碼 v4.1
RuoYi-activiti是一款以若依開源權(quán)限管理系統(tǒng)為基礎(chǔ)開發(fā)平臺(tái)并集成了activiti框架完成的工作流系統(tǒng),旨在打造集流程設(shè)計(jì)、流程部署、流程執(zhí)行、任務(wù)辦理、流程監(jiān)控于一體的...
-
RuoYi若依權(quán)限管理系統(tǒng) v4.7.9
RuoYi若依權(quán)限管理系統(tǒng)是一個(gè)基于SpringBoot的權(quán)限管理系統(tǒng),代碼易讀易懂、界面簡(jiǎn)潔美觀, 核心技術(shù)采用Spring、MyBatis、Shiro沒(méi)有任何其它重度依賴,喜歡的朋友快來(lái)下載...
-
Java Struts2漏洞復(fù)現(xiàn)工具
今天給大家分享Java Struts2漏洞復(fù)現(xiàn)工具,喜歡的朋友快來(lái)下載體驗(yàn)吧...
-
java操作excel的jar包(jxl.jar包 源碼)
jxl.jar是通過(guò)java操作excel表格的工具類庫(kù),能夠修飾單元格屬性,是由java語(yǔ)言開發(fā)而成的,接下來(lái)通過(guò)本文給大家介紹java操作excel的jar包(jxl.jar包 源碼),喜歡的朋友快...
-
springboot整合QuartJob實(shí)現(xiàn)定時(shí)器實(shí)時(shí)管理源代碼
Quartz是一個(gè)完全由java編寫的開源作業(yè)調(diào)度框架,形式簡(jiǎn)易,功能強(qiáng)大,,下面給大家分享springboot整合QuartJob實(shí)現(xiàn)定時(shí)器實(shí)時(shí)管理源代碼,感興趣的朋友快來(lái)下載體驗(yàn)吧...
-
SOFABoot開源框架 v3.24.0
SOFABoot 是螞蟻集團(tuán)開源的基于 Spring Boot 的研發(fā)框架,它在 Spring Boot 的基礎(chǔ)上,提供了諸如 Readiness Check,上下文隔離,類隔離,日志空間隔離等等能力...
-
基于SSM的應(yīng)急資源管理系統(tǒng)源碼 v1.0
應(yīng)急資源管理系統(tǒng)用的是是比較流行的SSM和前端JSP技術(shù),用它來(lái)創(chuàng)建使用腳本語(yǔ)言,結(jié)合HTML代碼來(lái)制作動(dòng)態(tài) 網(wǎng)頁(yè),歡迎需要的朋友下載使用...
下載聲明
☉ 解壓密碼:www.dbjr.com.cn 就是本站主域名,希望大家看清楚,[ 分享碼的獲取方法 ]可以參考這篇文章
☉ 推薦使用 [ 迅雷 ] 下載,使用 [ WinRAR v5 ] 以上版本解壓本站軟件。
☉ 如果這個(gè)軟件總是不能下載的請(qǐng)?jiān)谠u(píng)論中留言,我們會(huì)盡快修復(fù),謝謝!
☉ 下載本站資源,如果服務(wù)器暫不能下載請(qǐng)過(guò)一段時(shí)間重試!或者多試試幾個(gè)下載地址
☉ 如果遇到什么問(wèn)題,請(qǐng)?jiān)u論留言,我們定會(huì)解決問(wèn)題,謝謝大家支持!
☉ 本站提供的一些商業(yè)軟件是供學(xué)習(xí)研究之用,如用于商業(yè)用途,請(qǐng)購(gòu)買正版。
☉ 本站提供的lock4j高性能分布式鎖 v2.2.6資源來(lái)源互聯(lián)網(wǎng),版權(quán)歸該下載資源的合法擁有者所有。