锁总结
锁的名词
- 自旋锁 ,自旋锁的其他种类,阻塞锁,可重入锁 ,读写锁 ,互斥锁 ,悲观锁 ,乐观锁 ,公平锁 ,偏向锁, 对象锁,线程锁,锁粗化, 锁消除,轻量级锁,重量级锁, 信号量,独享锁,共享锁,分段锁
分布式锁
实现条件
1、在分布式系统环境下,一个方法在同一时间只能被一个机器的一个线程执行;
2、高可用的获取锁与释放锁;
3、高性能的获取锁与释放锁;
4、具备可重入特性;
5、具备锁失效机制,防止死锁;
6、具备非阻塞锁特性,即没有获取到锁将直接返回获取锁失败
实现方式
- 基于数据库
- 基于redis
- 基于zookeeper
实现思想
- 向锁端请求获取并占有锁资源 tryLock()
- 如果锁资源存在,则获取锁成功,否则立刻返回失败
- 获取锁成功后,进行业务处理,获取锁失败,稍后重新尝试获取锁,或直接业务失败
- 业务处理完成后,向锁端请求并释放锁资源 unLock()