Skip to content

让你用更优雅的方式加锁,基于注解的加锁方式。一直以来,线程安全问题是考验web后端人员的主要问题之一,加锁是解决线程安全问题的主要形式。 从锁的形式上看,锁可以分为乐观锁和悲观锁。从锁的内容上看,锁可以分为互斥锁和共享锁。 这个Jar包旨在提供全套的锁解决方案,让你使用一个注解就能对目标进行加锁

License

Notifications You must be signed in to change notification settings

ZongXR/SpringLock

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

23 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

SpringLock

让你用更优雅的方式加锁,基于spring的注解的加锁实现方式

功能简介

这个jar包能够让你使用更优雅的方式加锁——基于注解的加锁方式。 一直以来,线程安全问题是考验web后端人员的主要问题之一,加锁是解决线程安全问题的主要形式。 从锁的形式上看,锁可以分为乐观锁和悲观锁。从锁的内容上看,锁可以分为互斥锁和共享锁。 这个Jar包旨在提供全套的锁解决方案,让你使用一个注解就能对目标进行加锁,就像下面这样子。
@Synchronized
public Consumer queryConsumerById(String id){...}
等同于
public synchronized Consumer queryConsumerById(String id){...}
再比如
@ReadLock
public Consumer queryConsumerById(String id){...}
等同于
public Consumer queryConsumerById(String id){
    this.readLock.lock();
    try{
        ...
    }finally{
        this.readLock.unlock();
    }
    return ...
}
如何?看了上面的简介是不是觉得使用很方便呢?

版本更新

版本号更新内容更新日期
0.1.0.0完成基本框架搭建;新增Synchronized注解,实现同步代码块2022年1月27日
0.2.0.0开发读锁注解,目前能通过注解获取内部已有的读锁2022年1月28日
0.2.1.0开发读锁注解,目前已实现注解编译期间添加读写锁2022年1月28日
0.2.2.0完成读锁开发,目前可基于注解动态生成读写锁和读锁2022年1月28日
0.2.2.1修复读锁逻辑BUG2022年1月28日
0.3.0.0完成读写锁开发,通过测试确定可用2022年1月29日
0.3.0.1修改maven打包方式2022年1月29日
0.3.1.0改进互斥锁,现在可以使用自定义的变量当作锁2022年1月30日
0.3.2.0修复读写锁没导入包的BUG;开发乐观锁注解2022年1月30日
0.3.3.0完成乐观锁处理器开发,目前可以将乐观锁动态编译进入类成员2022年1月30日
0.4.0.0完成乐观锁开发。目前有互斥锁、读写锁、乐观锁,均已测试可用2022年1月30日
0.5.0.0优化执行逻辑,提升互斥锁性能2021年1月31日
0.6.0.0完善读写锁,现在可以自定义公平非公平2022年2月2日
0.7.0.0完善读写锁,现在fair自定义属性可以只写在一处2022年2月3日
0.8.0.0完善读锁,提供最长等待时间,最长执行时间,是否强制执行等属性,全方位避免死锁2022年2月4日
0.8.1.0完善写锁,提供最长等待时间,最长执行时间,是否强制执行等属性,全方位避免死锁2022年2月4日
0.9.0.0完善读写锁注解,现在可以使用自定义的读写锁2022年2月4日
1.0.0.0修复时长溢出的BUG;完善乐观锁,现在可以使用自定义的乐观锁,并指定最长等待时间、最长执行时间、是否强制执行等,全方位避免死锁2022年2月5日
1.1.0.0新增注解@MakeReadWriteLocks用于对类生成自定义读写锁,其fair属性来自于注解的类下@ReadLock注解或@WriteLock注解的fair属性值2022年2月6日
1.2.0.0废弃@MakeReadWriteLocks注解,现在不需要该注解也能正常识别自定义的锁;精简代码,提高编译速度2022年2月6日
1.2.1.0锁注解允许继承2022年2月19日

About

让你用更优雅的方式加锁,基于注解的加锁方式。一直以来,线程安全问题是考验web后端人员的主要问题之一,加锁是解决线程安全问题的主要形式。 从锁的形式上看,锁可以分为乐观锁和悲观锁。从锁的内容上看,锁可以分为互斥锁和共享锁。 这个Jar包旨在提供全套的锁解决方案,让你使用一个注解就能对目标进行加锁

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages