Git Product home page Git Product logo

zongxr / springlock Goto Github PK

View Code? Open in Web Editor NEW
6.0 3.0 0.0 110 KB

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

License: GNU General Public License v3.0

Java 100.00%
spring lock synchronized readwritelock java optimistic-lock

springlock's Introduction

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日

springlock's People

Contributors

zongxr avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.