多线程之重入锁ReentrantLock(四)

本文探讨了Java中的可重入锁ReentrantLock,对比了它与synchronized的区别。ReentrantLock提供更高级的功能,如可中断锁等待、公平与非公平锁选择,以及更好的性能。通过一个多线程售票的例子,展示了ReentrantLock的正确使用方式,强调了释放锁的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在博文多线程之内存可见性Volatile(一)多线程之原子变量CAS算法(二)中,我介绍了如何安全的访问共享对象,给了两种解决方案,java5.0之后,增加了lock接口的高级功能。

这篇博文,我们介绍lock接口的一种实现,重入锁ReentrantLock,我们只是简单的介绍和synchronized进行一下对比。对于重入锁更加深入的内容,后面我们会再详细的写。

ReentrantLock

ReentrantLock是一个可重入的互斥锁,重入锁是一种递归无阻塞的同步机制。即ReentrantLock实现了Lock接口,并提供了与synchronized相同的互斥性和内存可见性。但相较于synchronized提供了更高的处理锁的灵活性。

可重入概念

若一个程序或子程序可以“安全的被并行执行(Parallel computing)”,则称其为可重入(reentrant或re-entrant)的。即当该子程序正在运行时,可以再次进入并执行它(并行执行时,个别的执行结果,都符合设计时的预期)。可重入概念是在单线程操作系统的时代提出的。

重入锁的构造方法提供了一个可选的公平参数:

不公平锁与公平锁的区别:</

评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序猿小亮

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值