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實現(xiàn)定時器實時管理源代碼29KB / 06-26
SOFABoot開源框架 v3.25.0587KB / 06-21
基于SSM的應(yīng)急資源管理系統(tǒng)源碼 v1.080.7MB / 05-25
-
mybatis一鍵生成xml文件及實體Bean開發(fā)實例 java源碼 / 4.19MB
-
Java圖書查詢系統(tǒng)源代碼 java源碼 / 2.77KB
-
Android PDF查看器開發(fā)實例 java源碼 / 1.01MB
-
后端開發(fā)配合elementui組件實現(xiàn)后端功能 (開發(fā)實例) java源碼 / 10.60MB
-
-
PublicCMS 永久開源JAVA CMS內(nèi)容管理系統(tǒng) v4.0.202506.a java源碼 / 24.6MB
-
Forest輕量級HTTP客戶端框架 v1.7.3 java源碼 / 2.35MB
-
Lucene全文檢索引擎工具包 v10.2.2 java源碼 / 43.5MB
-
螢火商城 v2.1.3 開源版 uniapp端 java源碼 / 529KB
-
Northstar盈富量化交易軟件 v7.3.6 java源碼 / 7.6MB
詳情介紹
lock4j是一個分布式鎖組件,其提供了多種不同的支持以滿足不同性能和環(huán)境的需求。
立志打造一個簡單但富有內(nèi)涵的分布式鎖組件。
特性
1、簡單易用,功能強大,擴展性強。
2、支持redission,redisTemplate,zookeeper??苫煊茫С謹U展。
如何使用
1、引入相關(guān)依賴(支持同時存在,不同方法不同鎖實現(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 {//默認獲取鎖超時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、配置全局默認的獲取鎖超時時間和鎖過期時間。
lock4j:
acquire-timeout: 3000 #默認值3s,可不設(shè)置
expire: 30000 #默認值30s,可不設(shè)置
primary-executor: com.baomidou.lock.executor.RedisTemplateLockExecutor #默認redisson>redisTemplate>zookeeper,可不設(shè)置
lock-key-prefix: lock4j #鎖key前綴, 默認值lock4j,可不設(shè)置
acquire-timeout 可以理解為排隊時長,超過這個時才就退出排隊,拋出獲取鎖超時異常。
為什么必須要有這個參數(shù)?現(xiàn)實你會一直排隊等下去嗎?所有人都一直排隊有沒有問題 ?
expire 鎖過期時間 。 主要是防止死鎖。 建議估計好你鎖方法運行時常,正常沒有復(fù)雜業(yè)務(wù)的增刪改查最多幾秒,留有一定冗余,10秒足夠。 我們默認30秒是為了兼容絕大部分場景。
2、自定義執(zhí)行器。
@Service
public class DemoService {//可在方法級指定使用某種執(zhí)行器,若自己實現(xiàn)的需要提前注入到Spring。
@Lock4j(executor = RedissonLockExecutor.class)
public Boolean test() {
return "true";
}
}
3、自定義鎖key生成器。
默認的鎖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、自定義鎖獲取失敗策略。
默認的鎖獲取失敗策略為 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 , 當前線程:" + Thread.currentThread().getName() + " , counter:" + (counter++));
} finally {
//釋放鎖
lockTemplate.releaseLock(lockInfo);
}
//結(jié)束
}
}
6、指定時間內(nèi)不釋放鎖(限流)
默認的鎖獲取失敗策略為 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";
}
}
下載地址
人氣源碼
相關(guān)文章
-
Java輕量級類隔離框架 SOFAArk Project v2.3.0SOFAArk 是一款基于 Java 實現(xiàn)的動態(tài)熱部署和輕量級類隔離框架,由螞蟻集團開源貢獻,主要提供應(yīng)用模塊的動態(tài)熱部署和類隔離能力。歡迎需要的朋友下載使用...
-
SpringBlade微服務(wù)開發(fā)平臺 v4.4.0SpringBlade 是一個由商業(yè)級項目升級優(yōu)化而來的SpringCloud分布式微服務(wù)架構(gòu)、SpringBoot單體式微服務(wù)架構(gòu)并存的綜合型項目,采用Java8 API重構(gòu)了業(yè)務(wù)代碼,完全遵循阿里巴...
-
Diboot輕代碼開發(fā)平臺 v2.11.0Diboot輕代碼開發(fā)平臺是一個面向開發(fā)人員的低代碼開發(fā)平臺,將重復(fù)性的工作自動化,提高質(zhì)量、效率、可維護性...
-
RuoYi-activiti工作流平臺源碼 v4.1RuoYi-activiti是一款以若依開源權(quán)限管理系統(tǒng)為基礎(chǔ)開發(fā)平臺并集成了activiti框架完成的工作流系統(tǒng),旨在打造集流程設(shè)計、流程部署、流程執(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)工具,喜歡的朋友快來下載體驗吧...
-
java操作excel的jar包(jxl.jar包 源碼)jxl.jar是通過java操作excel表格的工具類庫,能夠修飾單元格屬性,是由java語言開發(fā)而成的,接下來通過本文給大家介紹java操作excel的jar包(jxl.jar包 源碼),喜歡的朋友快...
-
springboot整合QuartJob實現(xiàn)定時器實時管理源代碼Quartz是一個完全由java編寫的開源作業(yè)調(diào)度框架,形式簡易,功能強大,,下面給大家分享springboot整合QuartJob實現(xiàn)定時器實時管理源代碼,感興趣的朋友快來下載體驗吧...
-
SOFABoot開源框架 v3.25.0SOFABoot 是螞蟻集團開源的基于 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)頁,歡迎需要的朋友下載使用...
下載聲明
☉ 解壓密碼:m.fzitv.net 就是本站主域名,希望大家看清楚,[ 分享碼的獲取方法 ]可以參考這篇文章
☉ 推薦使用 [ 迅雷 ] 下載,使用 [ WinRAR v5 ] 以上版本解壓本站軟件。
☉ 如果這個軟件總是不能下載的請在評論中留言,我們會盡快修復(fù),謝謝!
☉ 下載本站資源,如果服務(wù)器暫不能下載請過一段時間重試!或者多試試幾個下載地址
☉ 如果遇到什么問題,請評論留言,我們定會解決問題,謝謝大家支持!
☉ 本站提供的一些商業(yè)軟件是供學(xué)習(xí)研究之用,如用于商業(yè)用途,請購買正版。
☉ 本站提供的lock4j高性能分布式鎖 v2.2.6資源來源互聯(lián)網(wǎng),版權(quán)歸該下載資源的合法擁有者所有。










