Java源码阅读之ReentrantLock - lockInterruptibly和tryLock方法
阅读优秀的源码是提升编程技巧的重要手段之一。 如有不对的地方,欢迎指正 转载请注明出处https://blog.lzoro.com。 碎碎念 上一篇博客阅读了Java的ReentrantLock的lock和unlock,这篇分析另外三个方法lockInterruptibly、tryLock()和tryLock(long time, TimeUnit unit) throws InterruptedException; 嗯,闲话少说,开工。 lockInterruptibly 顾名思义,这是一个可中断的获取锁方法。 方法的描述如下: 请求锁,除非当前线程被中断。 如果没有其他线程持有锁,则当前线程获取到锁,并为锁计数加1,并且立即返回。 如果当前线程已经持有锁,则为锁计数加1,并立即返回。 如果其他线程持有锁,则当前线程将处于不可用状态以达到于线程调度目的,并且休眠直到下面两个事件中的一个发生: ①、当前线程获取到锁 ②、其他线程中断当前线程 如果当前线程获取到锁,则将锁计数设置为1。 如果当前线程在方法条目上设置了中断状态或者在请求锁的时候被中断,将抛出中断异常。 阅读 Continu...
