ReentrantLock 源码分析 - 并发小知识

前言

接下来会出一系列文章来分析 ReentrantLock 的源码, 在此之前需要具备很多基础, 因为说到 A 知识点可能牵扯出 B 知识点, 又扯出 C 知识点, 一环扣一环, 本文先从最基础的开始了解。

正文

先来看一些并发相关的小知识

原子性

原子性操作是指执行一系列操作时, 要么全部执行, 要么全部不执行。

类似数据库事务的原子性。

CAS 操作

CAS 全称是 Compare And Swap。实现了非阻塞原子性操作, sun.misc.Unsafe类中提供了一系列 CAS 操作。

独占锁和共享锁

根据锁只能被单线程持有, 还是能被多个线程一同持有, 来判定一个锁为独占锁还是共享锁。

独占锁保证任意时刻, 只能被一个线程持有, 比如 ReentrantLock, 而共享锁可以同时被多个线程持有, 比如 ReentrantReadWriteLock

可重入锁

当多个线程同时去抢占一个独占锁时, 只能有一个线程可以获得, 其余的线程将会被阻塞。

而那个持有锁的线程, 再次去获取锁时, 如果不被阻塞, 那么这个锁就被称为可重入锁。

比如 synchronizedReentrantLock

公平锁和非公平锁

公平锁表示线程获取锁的顺序是根据 先来后到 来决定的, 公平锁则表示后来的也可以插队

ReentrantLock可以通过构造参数的方式去决定 new 出来的是一个公平锁 还是 非公平锁。

  • 公平锁

    ReentrantLock fairLock = new ReentrantLock(true)

  • 非公平锁

    ReentranLock nonFairLock = new ReentrantLock(false);

总结

以上就是分析 ReentrantLcok 源码之前必备的小知识, 下一篇仍然不会深入到源码, 而是讲几个并发公共基础类。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值