重入锁有哪些重要的方法

参考答案

重入锁最重要的几个方法:

重入锁的这6个重要方法,都是 Lock 接口中定义的。

1.  lock()

获取锁,有以下三种情况:

  • 锁空闲:直接获取锁并返回,同时设置锁持有者数量为:1。
  • 当前线程持有锁:直接获取锁并返回,同时锁持有者数量递增1。
  • 其他线程持有锁:当前线程会休眠等待,直至获取锁为止。

2.  lockInterruptibly()

获取锁,逻辑和 lock() 方法一样,但这个方法在获取锁过程中能响应中断。

3.  tryLock()

从关键字字面理解,这是在尝试获取锁,获取成功返回:true,获取失败返回:false, 这个方法不会等待,有以下三种情况:

  • 锁空闲:直接获取锁并返回:true,同时设置锁持有者数量为:1。
  • 当前线程持有锁:直接获取锁并返回:true,同时锁持有者数量递增1。
  • 其他线程持有锁:获取锁失败,返回:false。

4.  tryLock(long timeout, TimeUnit unit)

逻辑和 tryLock() 差不多,只是这个方法是带时间的。

5.  unlock()

释放锁,每次锁持有者数量递减 1,直到 0 为止。所以,现在知道为什么 lock 多少次,就要对应 unlock 多少次了吧。

6.  newCondition

返回一个这个锁的 Condition 实例,可以实现 synchronized 关键字类似 wait/ notify 实现多线程通信的功能,这个比 wait/ notify 更灵活、更强大。

以上,是Java面试题【重入锁有哪些重要的方法】的参考答案。

 

输出,是最好的学习方法

欢迎在评论区留下你的问题、笔记或知识点补充~

—end—

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧