在上一篇文章:《Java并发编程系列04:解决多线程安全-Lock》中
https://blog.csdn.net/fen_fen/article/details/121470551
学Lock时,发现创建对象用的是ReentrantLock。这里也了解下“ReentrantLock”
//创建一个锁对象
private final Lock lock = new ReentrantLock();
ReentrantLock简介
ReentrantLock是一个可重入且独占式的锁,它具有与使用synchronized监视器锁相同的基本行为和语义,但与synchronized关键字相比,它更灵活、更强大,增加了轮询、超时、中断等高级功能。
独占锁:同一时间内只有一个线程可以获取这个锁并占用资源。其他线程想要获取锁,必须等待这个线程释放锁。
ReentrantLock,顾名思义,它是支持可重入锁的锁,是一种递归无阻塞的同步机制。除此之外,该锁还支持获取锁时的公平和非公平选择。
ReentrantLock类图: