zoukankan      html  css  js  c++  java
  • ReentranLock浅析与用法

    一、定义

      ReentantLock 继承接口 Lock,他是一种可重入锁(*),除了能完成 synchronized 所能完成的所有工作外,还提供了诸如可响应中断锁可轮询锁请求定时锁等避免多线程死锁的方法。
    二、主要接口
    1. void lock():如果锁处于空闲状态,当前线程将获取到锁;否则如果锁已经被其他线程持有, 将禁用当前线程(处于阻塞状态), 直到当前线程获取到锁
    2. boolean tryLock():如果锁可用,则获取锁,并立即返回 true;否则返回 false
    3. void lockInterruptibly() throw InterruptedException:与lock()方法一致,但是线程中断时,会抛出InterruptedException异常
    4. void unlock():当前线程将释放持有的锁;如果线程并不持有锁, 却执行该方法, 可能导致异常的发生
    5. boolean isLocked():是否有线程
    6. ReentrantLock():默认非公平锁
    7. ReentrantLock(boolean fair):配置公平锁/非公平锁(false:非公平锁;true:公平锁)
    8. Condition newCondition():条件对象,获取等待通知组件(该组件和当前的锁绑定)
      • void await() throw InterruptedException:等效Object类的wait()方法
      • void signal():等效Object类的notify()方法
      • void signalAll():等效Object类的notifyAll()方法
  • 相关阅读:
    [JSOI2018]潜入行动
    [ZJOI2013]丽洁体
    [CTSC2017]吉夫特
    [SDOI2016]储能表
    POJ-3616 Milking Time
    POJ-2385 Apple Catching---DP
    POJ-2229 Sumsets---完全背包变形
    hdu-1114 Piggy-Bank---完全背包
    POJ-3050 Hopscotch---DFS
    POJ-3187 Backward Digit Sums---枚举全排列
  • 原文地址:https://www.cnblogs.com/pascall/p/11121428.html
Copyright © 2011-2022 走看看