# java-distributed-lock **Repository Path**: cinitial/java-distributed-lock ## Basic Information - **Project Name**: java-distributed-lock - **Description**: java 分布式锁。将其分成 远程锁 和 本地锁, 相同进程的线程竞争本地锁,不同进程之间竞争远程锁,以减少资源的消耗。 - **Primary Language**: Java - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2020-06-15 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # java-distributed-lock ## 说明 目前常用的分布式锁的实现方式有 - redis - zookeeper - mysql 其思想都是相同的:多线程竞争,同一条记录。 以 Redis 的分布式锁为例,开发人员开锁应用,利用 redis 连接池来操作 Redis 资源,并向 应用层提供 lock unlock 等锁接口。 ![image-20200621153107493](README.assets/image-20200621153107493.png) 在一般的情况下,这些锁应用会为每一个请求锁资源的线程分配一个 Redis 连接,很快消耗连接池的资源。 我们可以将锁应用拆分一下,分成 本地锁 和 远程锁, 远程锁就是原先的老的锁应用,用来和其他进程竞争锁资源,而本地锁是使用AQS来实现,让各个线程来竞争 远程锁 的使用权,这样一来同一个进程中的线程想要竞争同一个锁资源,只要分配一个Redis连接就可以了。 ![image-20200621153121426](README.assets/image-20200621153121426.png)