lock

Posted 博客首页

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了lock相关的知识,希望对你有一定的参考价值。

假如线程A和线程B使用同一个锁LOCK,此时线程A首先获取到锁LOCK.lock(),并且始终持有不释放。

如果此时B要去获取锁,有四种方式:

  • LOCK.lock(): 此方式会始终处于等待中,即使调用B.interrupt()也不能中断,除非线程A调用LOCK.unlock()释放锁。

  • LOCK.lockInterruptibly(): 此方式会等待,但当调用B.interrupt()会被中断等待,并抛出InterruptedException异常,否则会与lock()一样始终处于等待中,直到线程A释放锁。

 

  • LOCK.tryLock(): 该处不会等待,获取不到锁并直接返回false,去执行下面的逻辑。

  • LOCK.tryLock(10, TimeUnit.SECONDS):该处会在10秒时间内处于等待中,但当调用B.interrupt()会被中断等待,并抛出InterruptedException。10秒时间内如果线程A释放锁,会获取到锁并返回true,否则10秒过后会获取不到锁并返回false,去执行下面的逻辑。

 

以上是关于lock的主要内容,如果未能解决你的问题,请参考以下文章

线程基础四 使用Monitor类锁定资源

Java多线程与并发库高级应用-工具类介绍

ReentrantReadWriteLock场景应用

并发技术12线程锁技术的使用

java并发线程锁技术的使用

Java多线程与并发库高级应用-工具类介绍