Java輕量級類隔離框架 SOFAArk Project v2.3.042.5MB / 01-19
SpringBlade微服務(wù)開發(fā)平臺 v4.4.0197KB / 01-30
Diboot輕代碼開發(fā)平臺 v2.11.01.3MB / 07-20
RuoYi-activiti工作流平臺源碼 v4.124.79MB / 07-19
RuoYi若依權(quán)限管理系統(tǒng) v4.7.94.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í)時管理源代碼29KB / 06-26
SOFABoot開源框架 v3.24.0587KB / 08-31
基于SSM的應(yīng)急資源管理系統(tǒng)源碼 v1.080.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
-
Exchangis輕量級數(shù)據(jù)交換平臺 v1.1.7 java源碼 / 14.2MB
-
ReactNative移動開發(fā)工具 v0.78.1 java源碼 / 12.3MB
詳情介紹
lock4j是一個分布式鎖組件,其提供了多種不同的支持以滿足不同性能和環(huán)境的需求。
立志打造一個簡單但富有內(nèi)涵的分布式鎖組件。
特性
1、簡單易用,功能強(qiáng)大,擴(kuò)展性強(qiáng)。
2、支持redission,redisTemplate,zookeeper??苫煊?,支持?jǐn)U展。
如何使用
1、引入相關(guān)依賴(支持同時存在,不同方法不同鎖實(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)獲取鎖超時3秒,30秒鎖過期
@Lock4j
public void simple() {
//do something
}
@Lock4j(keys = {"#user.id", "#user.name"}, expire = 60000, acquireTimeout = 1000)
public User customMethod(User user) {
return user;
}
}
高級使用
1、配置全局默認(rèn)的獲取鎖超時時間和鎖過期時間。
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ì)時長,超過這個時才就退出排隊(duì),拋出獲取鎖超時異常。
為什么必須要有這個參數(shù)?現(xiàn)實(shí)你會一直排隊(duì)等下去嗎?所有人都一直排隊(duì)有沒有問題 ?
expire 鎖過期時間 。 主要是防止死鎖。 建議估計(jì)好你鎖方法運(yùn)行時常,正常沒有復(fù)雜業(yè)務(wù)的增刪改查最多幾秒,留有一定冗余,10秒足夠。 我們默認(rèn)30秒是為了兼容絕大部分場景。
2、自定義執(zhí)行器。
@Service
public class DemoService {//可在方法級指定使用某種執(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、手動上鎖解鎖。
@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ù)處理中,請稍后再試");
}
// 獲取鎖成功,處理業(yè)務(wù)
try {
System.out.println("執(zhí)行簡單方法1 , 當(dāng)前線程:" + Thread.currentThread().getName() + " , counter:" + (counter++));
} finally {
//釋放鎖
lockTemplate.releaseLock(lockInfo);
}
//結(jié)束
}
}
6、指定時間內(nèi)不釋放鎖(限流)
默認(rèn)的鎖獲取失敗策略為 com.baomidou.lock.DefaultLockFailureStrategy 。
@Service
public class DemoService {// 用戶在5秒內(nèi)只能訪問1次
@Lock4j(keys = {"#user.id"}, acquireTimeout = 0, expire = 5000, autoRelease = false)
public Boolean test(User user) {
return "true";
}
}
下載地址
人氣源碼

若依后臺管理系統(tǒng) RuoYi v4.7.8
CryptoJS加密庫(crypto.js) v4.2.0
JetLinks開源物聯(lián)網(wǎng)平臺源碼 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圖表庫 v5.6.0
因酷時代(inxedu)在線教育系統(tǒng) V2.0.6
Javashop B2C開源電商系統(tǒng) v6.3.2
iBizEAM開源設(shè)備資產(chǎn)管理系統(tǒng)源碼 v1.0
相關(guān)文章
-
Java輕量級類隔離框架 SOFAArk Project v2.3.0SOFAArk 是一款基于 Java 實(shí)現(xiàn)的動態(tài)熱部署和輕量級類隔離框架,由螞蟻集團(tuán)開源貢獻(xiàn),主要提供應(yīng)用模塊的動態(tài)熱部署和類隔離能力。歡迎需要的朋友下載使用...
-
SpringBlade微服務(wù)開發(fā)平臺 v4.4.0SpringBlade 是一個由商業(yè)級項(xiàng)目升級優(yōu)化而來的SpringCloud分布式微服務(wù)架構(gòu)、SpringBoot單體式微服務(wù)架構(gòu)并存的綜合型項(xiàng)目,采用Java8 API重構(gòu)了業(yè)務(wù)代碼,完全遵循阿里巴...
-
Diboot輕代碼開發(fā)平臺 v2.11.0Diboot輕代碼開發(fā)平臺是一個面向開發(fā)人員的低代碼開發(fā)平臺,將重復(fù)性的工作自動化,提高質(zhì)量、效率、可維護(hù)性...
-
RuoYi-activiti工作流平臺源碼 v4.1RuoYi-activiti是一款以若依開源權(quán)限管理系統(tǒng)為基礎(chǔ)開發(fā)平臺并集成了activiti框架完成的工作流系統(tǒng),旨在打造集流程設(shè)計(jì)、流程部署、流程執(zhí)行、任務(wù)辦理、流程監(jiān)控于一體的...
-
RuoYi若依權(quán)限管理系統(tǒng) v4.7.9RuoYi若依權(quán)限管理系統(tǒng)是一個基于SpringBoot的權(quán)限管理系統(tǒng),代碼易讀易懂、界面簡潔美觀, 核心技術(shù)采用Spring、MyBatis、Shiro沒有任何其它重度依賴,喜歡的朋友快來下載...
-
Java Struts2漏洞復(fù)現(xiàn)工具今天給大家分享Java Struts2漏洞復(fù)現(xiàn)工具,喜歡的朋友快來下載體驗(yàn)吧...
-
java操作excel的jar包(jxl.jar包 源碼)jxl.jar是通過java操作excel表格的工具類庫,能夠修飾單元格屬性,是由java語言開發(fā)而成的,接下來通過本文給大家介紹java操作excel的jar包(jxl.jar包 源碼),喜歡的朋友快...
-
springboot整合QuartJob實(shí)現(xiàn)定時器實(shí)時管理源代碼Quartz是一個完全由java編寫的開源作業(yè)調(diào)度框架,形式簡易,功能強(qiáng)大,,下面給大家分享springboot整合QuartJob實(shí)現(xiàn)定時器實(shí)時管理源代碼,感興趣的朋友快來下載體驗(yàn)吧...
-
SOFABoot開源框架 v3.24.0SOFABoot 是螞蟻集團(tuán)開源的基于 Spring Boot 的研發(fā)框架,它在 Spring Boot 的基礎(chǔ)上,提供了諸如 Readiness Check,上下文隔離,類隔離,日志空間隔離等等能力...
-
基于SSM的應(yīng)急資源管理系統(tǒng)源碼 v1.0應(yīng)急資源管理系統(tǒng)用的是是比較流行的SSM和前端JSP技術(shù),用它來創(chuàng)建使用腳本語言,結(jié)合HTML代碼來制作動態(tài) 網(wǎng)頁,歡迎需要的朋友下載使用...
下載聲明
☉ 解壓密碼:www.dhdzp.com 就是本站主域名,希望大家看清楚,[ 分享碼的獲取方法 ]可以參考這篇文章
☉ 推薦使用 [ 迅雷 ] 下載,使用 [ WinRAR v5 ] 以上版本解壓本站軟件。
☉ 如果這個軟件總是不能下載的請?jiān)谠u論中留言,我們會盡快修復(fù),謝謝!
☉ 下載本站資源,如果服務(wù)器暫不能下載請過一段時間重試!或者多試試幾個下載地址
☉ 如果遇到什么問題,請?jiān)u論留言,我們定會解決問題,謝謝大家支持!
☉ 本站提供的一些商業(yè)軟件是供學(xué)習(xí)研究之用,如用于商業(yè)用途,請購買正版。
☉ 本站提供的lock4j高性能分布式鎖 v2.2.6資源來源互聯(lián)網(wǎng),版權(quán)歸該下載資源的合法擁有者所有。

