今日头条关于可重入锁的一道面试题

问可重入锁ReentrantLock的可重入是什么意思,百度好像没找到呀,有哪位大神能讲讲吗#字节跳动##Java工程师##安卓工程师#
全部评论
重入锁(ReentrantLock)是一种递归无阻塞的同步机制。以前一直认为它是synchronized的简单替代,而且实现机制也不相差太远。不过最近实践过程中发现它们之间还是有着天壤之别。 以下是官方说明:一个可重入的互斥锁定 Lock,它具有与使用 synchronized 方法和语句所访问的隐式监视器锁定相同的一些基本行为和语义,但功能更强大。ReentrantLock 将由最近成功获得锁定,并且还没有释放该锁定的线程所拥有。当锁定没有被另一个线程所拥有时,调用 lock 的线程将成功获取该锁定并返回。如果当前线程已经拥有该锁定,此方法将立即返回。可以使用 isHeldByCurrentThread() 和 getHoldCount() 方法来检查此情况是否发生。
点赞 回复 分享
发布于 2017-02-23 12:22
线程获取到锁后还可以再获取这把锁,这就叫重入。内部基于AQS
3 回复 分享
发布于 2017-02-23 11:43
如果一个线程已经拥有了某一个对象的锁,当执行到需要获取锁的代码段时可以直接进行,无需再次获取锁。不然他会把自己等死
点赞 回复 分享
发布于 2017-02-23 14:32
ReentrantLock 底层通过一个 Sync 的静态类实现加锁解锁。 Sync 继承自 AbstractQueuedSynchronizer ,队列同步器 AbstractQueuedSynchronizer ,简称 AQS ,是用来构建锁或者其他同步组件的基础框架。该抽象类内部通过内置的先进先出队列来完成资源获取线程排队工作。
点赞 回复 分享
发布于 2017-02-25 17:23
意思就是锁了多次,程序不会报错。
点赞 回复 分享
发布于 2017-02-25 16:33
百度递归锁
点赞 回复 分享
发布于 2017-02-24 23:12

相关推荐

不愿透露姓名的神秘牛友
09-23 18:40
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务