锁
文章平均质量分 96
Croatoanlus
这个作者很懒,什么都没留下…
展开
-
Synchronized原理(轻量级锁篇)
Synchronized原理(轻量级锁篇)简述介绍轻量级锁是JDK1.6之中加入的新型锁机制,它名字中的“轻量级”是相对于使用操作系统互斥量来实现的传统锁而言的,因此传统的锁机制就称为“重量级”锁。首先需要强调一点的是,轻量级锁并不是用来代替重量级锁的,它的本意是在没有多线程竞争的前提下,减少传统的重量级锁使用操作系统互斥量产生的性能消耗。轻量级锁能够提升程序性能的依据是“对绝大部分的锁,在整个同步周期内都不存在竞争”,注意这是经验数据。需要了解的是,轻量级锁所适应的场景是线程交替执行同步块的场合,原创 2021-09-26 18:20:16 · 11020 阅读 · 18 评论 -
ReentrantLock与AQS(一)
AQS全称是 AbstractQueuedSynchronizer(抽象队列同步器),是Java并发包中加锁和释放锁的核心组件。使用AQS实现的工具类有ReentrantLock、ReentrantReadWriteLock、Semaphore等等CAS理论在了解AQS之前需要先熟悉下CAS,Compare-And-Swap,是一条CPU并发原语,用于判断内存中某个位置的值是否没有被修改过,如果是则更改为新的值,这个过程是原子的。具体的操作流程先去读一次内存地址中的旧值,保存下来。在准备写之前原创 2021-08-19 18:39:13 · 517 阅读 · 1 评论 -
Synchronized原理(偏向锁篇)
Synchronized原理(偏向锁篇)传统的锁机制传统的锁依赖于系统的同步函数,在linux上使用mutex互斥锁,最底层实现依赖于futex,这些同步函数都涉及到用户态和内核态的切换、进程的上下文切换。这种状态转换需要耗费处理器时间。如果同步代码块中的内容过于简单,状态转换消耗的时间有可能比用户代码执行的时间还要长,这种依赖于操作系统Mutex Lock所实现的锁我们称之为**“重量级锁”**。对于加了synchronized关键字但运行时并没有多线程竞争,或两个线程接近于交替执行的情况,使用传统原创 2021-09-24 17:39:28 · 4437 阅读 · 15 评论