java.util.concurrent.locks.ReentrantLock 锁经验_JAVA_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > JAVA > java.util.concurrent.locks.ReentrantLock 锁经验

java.util.concurrent.locks.ReentrantLock 锁经验

 2014/5/20 19:09:55  flypeace  程序员俱乐部  我要评论(0)
  • 摘要:1、ReentrantLock锁是采用计数机制来进行加锁的,getHoldCount()方法,可以认为当前线程Hold的次数,在实际当前线程中,lock/tryLock和unlock不匹配,可能出现锁无法释放的情况。2、如果先tryLock,然后再lock一次,则holdCount为2,如果在finally中unlock一次,holdCount只减1,也不能释放锁。缩放锁的前提是:如果hold数为0,则释放锁。所以tryLock之后,如果成果获取锁,也就马上会锁住,无需再进行一次lock操作
  • 标签:Java 经验 Ant

?

???? 1、ReentrantLock 锁是采用计数机制来进行加锁的,getHoldCount() 方法,可以认为当前线程Hold的次数,在实际当前线程中,lock/tryLock 和 unlock 不匹配,可能出现锁无法释放的情况。

?

????? 2、如果 先tryLock?? ,然后再 lock 一次,则holdCount 为2,如果在finally中 unlock 一次,holdCount只 减1,也不能释放锁。缩放锁的前提是:如果hold 数为 0 ,则释放锁。所以 tryLock?? 之后,如果成果获取锁,也就马上会锁住,无需再进行一次 lock 操作,其他线程获取不到锁,是无缝的。

?

????? 3、另外 unlock 操作,如果当前线程没有持有hold 就调用 unlock 方法,就会抛出 IllegalMonitorStateException 异常.

?

?

发表评论
用户名: 匿名