{"id":20519680,"url":"https://github.com/zongxr/springlock","last_synced_at":"2025-04-14T02:10:41.078Z","repository":{"id":112122722,"uuid":"452270137","full_name":"ZongXR/SpringLock","owner":"ZongXR","description":"让你用更优雅的方式加锁，基于注解的加锁方式。一直以来，线程安全问题是考验web后端人员的主要问题之一，加锁是解决线程安全问题的主要形式。 从锁的形式上看，锁可以分为乐观锁和悲观锁。从锁的内容上看，锁可以分为互斥锁和共享锁。 这个Jar包旨在提供全套的锁解决方案，让你使用一个注解就能对目标进行加锁","archived":false,"fork":false,"pushed_at":"2022-02-19T07:01:57.000Z","size":110,"stargazers_count":6,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-03-27T16:09:28.297Z","etag":null,"topics":["java","lock","optimistic-lock","readwritelock","spring","synchronized"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ZongXR.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2022-01-26T12:39:28.000Z","updated_at":"2024-07-29T23:05:41.000Z","dependencies_parsed_at":"2023-04-08T02:16:44.416Z","dependency_job_id":null,"html_url":"https://github.com/ZongXR/SpringLock","commit_stats":null,"previous_names":["zongxr/springlock"],"tags_count":6,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ZongXR%2FSpringLock","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ZongXR%2FSpringLock/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ZongXR%2FSpringLock/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ZongXR%2FSpringLock/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ZongXR","download_url":"https://codeload.github.com/ZongXR/SpringLock/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248809046,"owners_count":21164896,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["java","lock","optimistic-lock","readwritelock","spring","synchronized"],"created_at":"2024-11-15T22:15:32.144Z","updated_at":"2025-04-14T02:10:41.048Z","avatar_url":"https://github.com/ZongXR.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003ch1\u003eSpringLock\u003c/h1\u003e\n\u003cb\u003e让你用更优雅的方式加锁，基于spring的注解的加锁实现方式\u003c/b\u003e\n\u003ch2\u003e功能简介\u003c/h2\u003e\n这个jar包能够让你使用更优雅的方式加锁——\u003cb\u003e基于注解的加锁方式\u003c/b\u003e。\n一直以来，线程安全问题是考验web后端人员的主要问题之一，加锁是解决线程安全问题的主要形式。\n从锁的形式上看，锁可以分为乐观锁和悲观锁。从锁的内容上看，锁可以分为互斥锁和共享锁。\n这个Jar包旨在提供全套的锁解决方案，让你使用一个注解就能对目标进行加锁，就像下面这样子。\u003cbr /\u003e\n\u003ccode\u003e@Synchronized\u003c/code\u003e\u003cbr /\u003e\n\u003ccode\u003epublic Consumer queryConsumerById(String id){...}\u003c/code\u003e\u003cbr /\u003e\n等同于\u003cbr /\u003e\n\u003ccode\u003epublic synchronized Consumer queryConsumerById(String id){...}\u003c/code\u003e\u003cbr /\u003e\n再比如\u003cbr /\u003e\n\u003ccode\u003e@ReadLock\u003c/code\u003e\u003cbr /\u003e\n\u003ccode\u003epublic Consumer queryConsumerById(String id){...}\u003c/code\u003e\u003cbr /\u003e\n等同于\u003cbr /\u003e\n\u003ccode\u003epublic Consumer queryConsumerById(String id){\u003c/code\u003e\u003cbr /\u003e\n\u003ccode\u003e\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;this.readLock.lock();\u003c/code\u003e\u003cbr /\u003e\n\u003ccode\u003e\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;try{\u003c/code\u003e\u003cbr /\u003e\n\u003ccode\u003e\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;...\u003c/code\u003e\u003cbr /\u003e\n\u003ccode\u003e\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;}finally{\u003c/code\u003e\u003cbr /\u003e\n\u003ccode\u003e\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;this.readLock.unlock();\u003c/code\u003e\u003cbr /\u003e\n\u003ccode\u003e\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;}\u003c/code\u003e\u003cbr /\u003e\n\u003ccode\u003e\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;return ...\u003c/code\u003e\u003cbr /\u003e\n\u003ccode\u003e}\u003c/code\u003e\u003cbr /\u003e\n如何？看了上面的简介是不是觉得使用很方便呢？\n\u003ch2\u003e版本更新\u003c/h2\u003e\n\u003ctable\u003e\n\u003ctr\u003e\n\u003cth\u003e版本号\u003c/th\u003e\u003cth\u003e更新内容\u003c/th\u003e\u003cth\u003e更新日期\u003c/th\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e0.1.0.0\u003c/td\u003e\u003ctd\u003e完成基本框架搭建；新增Synchronized注解，实现同步代码块\u003c/td\u003e\u003ctd\u003e2022年1月27日\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e0.2.0.0\u003c/td\u003e\u003ctd\u003e开发读锁注解，目前能通过注解获取内部已有的读锁\u003c/td\u003e\u003ctd\u003e2022年1月28日\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e0.2.1.0\u003c/td\u003e\u003ctd\u003e开发读锁注解，目前已实现注解编译期间添加读写锁\u003c/td\u003e\u003ctd\u003e2022年1月28日\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e0.2.2.0\u003c/td\u003e\u003ctd\u003e完成读锁开发，目前可基于注解动态生成读写锁和读锁\u003c/td\u003e\u003ctd\u003e2022年1月28日\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e0.2.2.1\u003c/td\u003e\u003ctd\u003e修复读锁逻辑BUG\u003c/td\u003e\u003ctd\u003e2022年1月28日\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e0.3.0.0\u003c/td\u003e\u003ctd\u003e完成读写锁开发，通过测试确定可用\u003c/td\u003e\u003ctd\u003e2022年1月29日\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e0.3.0.1\u003c/td\u003e\u003ctd\u003e修改maven打包方式\u003c/td\u003e\u003ctd\u003e2022年1月29日\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e0.3.1.0\u003c/td\u003e\u003ctd\u003e改进互斥锁，现在可以使用自定义的变量当作锁\u003c/td\u003e\u003ctd\u003e2022年1月30日\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e0.3.2.0\u003c/td\u003e\u003ctd\u003e修复读写锁没导入包的BUG；开发乐观锁注解\u003c/td\u003e\u003ctd\u003e2022年1月30日\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e0.3.3.0\u003c/td\u003e\u003ctd\u003e完成乐观锁处理器开发，目前可以将乐观锁动态编译进入类成员\u003c/td\u003e\u003ctd\u003e2022年1月30日\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e0.4.0.0\u003c/td\u003e\u003ctd\u003e完成乐观锁开发。目前有互斥锁、读写锁、乐观锁，均已测试可用\u003c/td\u003e\u003ctd\u003e2022年1月30日\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e0.5.0.0\u003c/td\u003e\u003ctd\u003e优化执行逻辑，提升互斥锁性能\u003c/td\u003e\u003ctd\u003e2021年1月31日\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e0.6.0.0\u003c/td\u003e\u003ctd\u003e完善读写锁，现在可以自定义公平非公平\u003c/td\u003e\u003ctd\u003e2022年2月2日\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e0.7.0.0\u003c/td\u003e\u003ctd\u003e完善读写锁，现在fair自定义属性可以只写在一处\u003c/td\u003e\u003ctd\u003e2022年2月3日\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e0.8.0.0\u003c/td\u003e\u003ctd\u003e完善读锁，提供最长等待时间，最长执行时间，是否强制执行等属性，全方位避免死锁\u003c/td\u003e\u003ctd\u003e2022年2月4日\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e0.8.1.0\u003c/td\u003e\u003ctd\u003e完善写锁，提供最长等待时间，最长执行时间，是否强制执行等属性，全方位避免死锁\u003c/td\u003e\u003ctd\u003e2022年2月4日\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e0.9.0.0\u003c/td\u003e\u003ctd\u003e完善读写锁注解，现在可以使用自定义的读写锁\u003c/td\u003e\u003ctd\u003e2022年2月4日\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e1.0.0.0\u003c/td\u003e\u003ctd\u003e修复时长溢出的BUG;完善乐观锁，现在可以使用自定义的乐观锁，并指定最长等待时间、最长执行时间、是否强制执行等，全方位避免死锁\u003c/td\u003e\u003ctd\u003e2022年2月5日\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e1.1.0.0\u003c/td\u003e\u003ctd\u003e新增注解\u003ccode\u003e@MakeReadWriteLocks\u003c/code\u003e用于对类生成自定义读写锁，其\u003ccode\u003efair\u003c/code\u003e属性来自于注解的类下\u003ccode\u003e@ReadLock\u003c/code\u003e注解或\u003ccode\u003e@WriteLock\u003c/code\u003e注解的\u003ccode\u003efair\u003c/code\u003e属性值\u003c/td\u003e\u003ctd\u003e2022年2月6日\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e1.2.0.0\u003c/td\u003e\u003ctd\u003e废弃\u003ccode\u003e@MakeReadWriteLocks\u003c/code\u003e注解，现在不需要该注解也能正常识别自定义的锁；精简代码，提高编译速度\u003c/td\u003e\u003ctd\u003e2022年2月6日\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e1.2.1.0\u003c/td\u003e\u003ctd\u003e锁注解允许继承\u003c/td\u003e\u003ctd\u003e2022年2月19日\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/table\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzongxr%2Fspringlock","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fzongxr%2Fspringlock","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzongxr%2Fspringlock/lists"}