分布式锁
晨韵风
这个作者很懒,什么都没留下…
展开
-
偏向锁,轻量锁,自旋锁,锁粗化
这里的锁优化主要是指 JVM 对 synchronized 的优化。偏向锁偏向锁的思想是偏向于让第一个获取锁对象的线程,这个线程在之后获取该锁就不再需要进行同步操作,甚至连 CAS 操作也不再需要。当锁对象第一次被线程获得的时候,进入偏向状态,标记为 1 01。同时使用 CAS 操作将线程 ID 记录到 Mark Word 中,如果 CAS 操作成功,这个线程以后每次进入这个锁相关的同步块就不需要再进行任何同步操作。当有另外一个线程去尝试获取这个锁对象时,偏向状态就宣告结束,此时撤销偏.原创 2020-12-08 13:42:47 · 149 阅读 · 0 评论 -
无锁机制----比较交换CAS Compare And Swap
一、锁与共享变量 加锁是一种悲观的策略,它总是认为每次访问共享资源的时候,总会发生冲突,所以宁愿牺牲性能(时间)来保证数据安全。 无锁是一种乐观的策略,它假设线程访问共享资源不会发生冲突,所以不需要加锁,因此线程将不断执行,不需要停止。一旦碰到冲突,就重试当前操作直到没有冲突为止。 无锁的策略使用一种叫做比较交换的技术(CASCompare And Swap)来鉴别线程冲突,一旦检测到冲突产生,就重试当前操作直到没有冲突为止。二、无锁如何鉴别冲突 ...转载 2020-12-02 11:28:43 · 129 阅读 · 0 评论 -
分布式锁
分布式锁那点事为什么要使用分布式锁为了保证一个方法在高并发情况下的同一时间只能被同一个线程执行,在传统单体应用单机部署的情况下,可以使用Java并发处理相关的API(如ReentrantLcok或synchronized)进行互斥控制。但是,随着业务发展的需要,原单体单机部署的系统被演化成分布式系统后,由于分布式系统多线程、多进程并且分布在不同机器上,这将使原单机部署情况下的并发控制锁策略失效,为了解决这个问题就需要一种跨JVM的互斥机制来控制共享资源的访问,这就是分布式锁要解决的问题。分布式锁转载 2020-11-23 22:27:46 · 123 阅读 · 0 评论