![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
并发编程
leonfree777
不忘初心,方得始终!
展开
-
ReentrantLock可重入锁
Lockjava.util.concurrent.lock 中的 Lock 框架是锁定的一个抽象,它允许把锁定的实现作为 Java 类,而不是作为语言的特性来实现。这就为 Lock 的多种实现留下了空间,各种实现可能有不同的调度算法、性能特性或者锁定语义。 ReentrantLock是什么?ReentrantLock 类实现了 Lock ,它拥有与 synchronized 相同的并发性和内存语义,原创 2017-11-06 22:01:20 · 210 阅读 · 0 评论 -
乐观锁和悲观锁
乐观并发控制(又名乐观锁) 乐观并发控制(OCC = Optimistic concurrency control)是一种并发控制方法,适用于像关系型数据库以及软件事务性内存这样的事务性系统。OCC假设多个事务可以频繁地完成,而这些事务互相不会干扰。在运行时,事务使用数据源而不需要获取这些资源上的锁。在提交数据更新之前,每个事务会先检查在该事务读取数据后,有没有其他事务又修改了该数据。如果有其他原创 2018-01-16 16:03:18 · 144 阅读 · 0 评论 -
偏向锁,轻量级锁与重量级锁
偏向锁 Hotspot 的作者经过以往的研究发现大多数情况下锁不仅不存在多线程竞争,而且总是由同一线程多次获得,为了让线程获得锁的代价更低而引入了偏向锁。当一个线程访问同步块并获取锁时,会在对象头和栈帧中的锁记录里存储锁偏向的线程 ID。以后该线程在进入和退出同步块时不需要花费CAS操作来加锁和解锁,而只需简单的检验一下对象头的Mark Word里是否存储着指向当前线程的偏向锁,如果存在,表示线转载 2018-01-16 16:29:36 · 269 阅读 · 0 评论