美文网首页
Lock和 Condition

Lock和 Condition

作者: Wi1ls努力努力再努力 | 来源:发表于2018-11-16 11:47 被阅读0次

Lock 必须要在 finally 中释放锁,在 Lock.lock( )和 Look.unlock( )边界。配合 Condition 可以做到指定唤醒。

  • Lock 分公平锁和非公平锁。

    • 公平锁,获取锁的顺序以线程加锁顺序分配。
    • 非公平锁,抢占。
  • getHoldCount( )@Lock;查询当前线程保持次所的个数,即lock( )调用次数

  • getQueueLength( )@Lock;等待获取锁的线程个数

  • int getWaitQueueLength(Condition)@Lock;返回等待与此锁相关的 Condition 的线程估计数

  • hasQueuedThread(Thread) @Lock;检查指定线程是否在等待此锁

  • hasQueuedThreads( )@Lock;是否有线程在等待获取此锁

  • boolean hasWaiter(Condition)@Lock; 是否有线程在等待与此锁有关的Condition

  • isFair( )@Lock;是否是公平锁

  • isHeldByCurrentThread( )@Lock;当前线程是否保持此锁

  • isLocked( )@Lock;此锁是否被任意线程保持

  • lockInterruptibly( )@Lock;如果当前线程未被终端,则获取锁。否则出现异常

  • boolean tryLock( )@Lock;调用时改锁未被其他线程保持,则获取该锁

  • boolean tryLock(long, TimeUnit)@Lock;若指定时间内锁未被其他线程保持且当前线程未中断则获取锁

  • ReentrantReadWriteLock,读写锁。读写互斥,写写互斥,读读不互斥

相关文章

网友评论

      本文标题:Lock和 Condition

      本文链接:https://www.haomeiwen.com/subject/lezpfqtx.html