类 LockUtils

java.lang.Object
org.tio.utils.lock.LockUtils

public class LockUtils extends Object
锁对象工具类
  • 构造器概要

    构造器
    构造器
    说明
     
  • 方法概要

    修饰符和类型
    方法
    说明
    获取锁对象,用于synchronized(lockObj)
    getLockObj(String key, Object myLock)
    获取锁对象,用于synchronized(lockObj)
    获取读写锁
    static void
    runWriteOrWaitRead(String key, Object myLock, ReadWriteLockHandler readWriteLockHandler)
    用读写锁操作
    1、能拿到写锁的线程会执行readWriteLockHandler.write()
    2、没拿到写锁的线程,会等待获取读锁,注:获取到读锁的线程,什么也不会执行
    3、当一段代码只允许被一个线程执行时,才用本函数,不要理解成同步等待了

    注意:对于一些需要判断null等其它条件才执行的操作,在write()方法中建议再检查一次,这个跟double check的原理是一样的
    static void
    runWriteOrWaitRead(String key, Object myLock, ReadWriteLockHandler readWriteLockHandler, Long readWaitTimeInSecond)
    运行write或者等待读锁
    1、能拿到写锁的线程会执行readWriteLockHandler.write()
    2、没拿到写锁的线程,会等待获取读锁,注:获取到读锁的线程,什么也不会执行
    3、当一段代码只允许被一个线程执行时,才用本函数,不要理解成同步等待了

    注意:对于一些需要判断null等其它条件才执行的操作,在write()方法中建议再检查一次,这个跟double check的原理是一样的

    从类继承的方法 java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • 构造器详细资料

    • LockUtils

      public LockUtils()
  • 方法详细资料

    • getLockObj

      public static Serializable getLockObj(String key)
      获取锁对象,用于synchronized(lockObj)
      参数:
      key -
      返回:
    • getLockObj

      public static Serializable getLockObj(String key, Object myLock)
      获取锁对象,用于synchronized(lockObj)
      参数:
      key -
      myLock - 获取LockObj的锁,可以为null
      返回:
    • getReentrantReadWriteLock

      public static ReentrantReadWriteLock getReentrantReadWriteLock(String key, Object myLock)
      获取读写锁
      参数:
      key -
      myLock - 获取ReentrantReadWriteLock的锁,可以为null
      返回:
    • runWriteOrWaitRead

      public static void runWriteOrWaitRead(String key, Object myLock, ReadWriteLockHandler readWriteLockHandler) throws Exception
      用读写锁操作
      1、能拿到写锁的线程会执行readWriteLockHandler.write()
      2、没拿到写锁的线程,会等待获取读锁,注:获取到读锁的线程,什么也不会执行
      3、当一段代码只允许被一个线程执行时,才用本函数,不要理解成同步等待了

      注意:对于一些需要判断null等其它条件才执行的操作,在write()方法中建议再检查一次,这个跟double check的原理是一样的
      参数:
      key -
      myLock - 获取ReentrantReadWriteLock的锁,可以为null
      readWriteLockHandler - 小心:该对象的write()方法并不一定会被执行
      抛出:
      Exception
    • runWriteOrWaitRead

      public static void runWriteOrWaitRead(String key, Object myLock, ReadWriteLockHandler readWriteLockHandler, Long readWaitTimeInSecond) throws Exception
      运行write或者等待读锁
      1、能拿到写锁的线程会执行readWriteLockHandler.write()
      2、没拿到写锁的线程,会等待获取读锁,注:获取到读锁的线程,什么也不会执行
      3、当一段代码只允许被一个线程执行时,才用本函数,不要理解成同步等待了

      注意:对于一些需要判断null等其它条件才执行的操作,在write()方法中建议再检查一次,这个跟double check的原理是一样的
      参数:
      key -
      myLock - 获取ReentrantReadWriteLock的锁,可以为null
      readWriteLockHandler - 小心:该对象的write()方法并不一定会被执行
      readWaitTimeInSecond - 没拿到写锁的线程,等读锁的时间,单位:秒
      抛出:
      Exception