聊一聊可重入锁特别重要的话题
发布时间:2021-03-28 14:21:28 所属栏目:运营 来源:互联网
导读:法,提供了锁最基本的功能,拿到锁就返回,拿不到就等待。因此,大规模得在复杂场景中使用,是有可能因此死锁的。因此,使用这个方法得非常小心。 如果要预防可能发生的死锁,可以尝试使用下面这个方法: boolean tryLock(long timeout, TimeUnit unit) throw
法,提供了锁最基本的功能,拿到锁就返回,拿不到就等待。因此,大规模得在复杂场景中使用,是有可能因此死锁的。因此,使用这个方法得非常小心。 如果要预防可能发生的死锁,可以尝试使用下面这个方法:
这是一个比单纯lock()更具有工程价值的方法,如果大家阅读过JDK的一些内部代码,就不难发现,tryLock()在JDK内部被大量的使用。 与lock()相比,tryLock()至少有下面一个好处:
当然了,当锁使用完后,千万不要忘记把它释放了。不然,程序可能就会崩溃啦~
此外, 重入锁还有一个不带任何参数的tryLock()。
这个不带任何参数的tryLock()不会进行任何等待,如果能够获得锁,直接返回true,如果获取失败,就返回false,特别适合在应用层自己对锁进行管理,在应用层进行自旋等待。 重入锁的实现原理
重入锁内部实现的主要类如下图: (编辑:惠州站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |