类 LockUtils
java.lang.Object
org.tio.utils.lock.LockUtils
锁对象工具类
-
构造器概要
构造器 -
方法概要
修饰符和类型方法说明static SerializablegetLockObj(String key) 获取锁对象,用于synchronized(lockObj)static SerializablegetLockObj(String key, Object myLock) 获取锁对象,用于synchronized(lockObj)static ReentrantReadWriteLockgetReentrantReadWriteLock(String key, Object myLock) 获取读写锁static voidrunWriteOrWaitRead(String key, Object myLock, ReadWriteLockHandler readWriteLockHandler) 用读写锁操作
1、能拿到写锁的线程会执行readWriteLockHandler.write()
2、没拿到写锁的线程,会等待获取读锁,注:获取到读锁的线程,什么也不会执行
3、当一段代码只允许被一个线程执行时,才用本函数,不要理解成同步等待了
注意:对于一些需要判断null等其它条件才执行的操作,在write()方法中建议再检查一次,这个跟double check的原理是一样的static voidrunWriteOrWaitRead(String key, Object myLock, ReadWriteLockHandler readWriteLockHandler, Long readWaitTimeInSecond) 运行write或者等待读锁
1、能拿到写锁的线程会执行readWriteLockHandler.write()
2、没拿到写锁的线程,会等待获取读锁,注:获取到读锁的线程,什么也不会执行
3、当一段代码只允许被一个线程执行时,才用本函数,不要理解成同步等待了
注意:对于一些需要判断null等其它条件才执行的操作,在write()方法中建议再检查一次,这个跟double check的原理是一样的
-
构造器详细资料
-
LockUtils
public LockUtils()
-
-
方法详细资料
-
getLockObj
获取锁对象,用于synchronized(lockObj)- 参数:
key-- 返回:
-
getLockObj
获取锁对象,用于synchronized(lockObj)- 参数:
key-myLock- 获取LockObj的锁,可以为null- 返回:
-
getReentrantReadWriteLock
获取读写锁- 参数:
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的锁,可以为nullreadWriteLockHandler- 小心:该对象的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的锁,可以为nullreadWriteLockHandler- 小心:该对象的write()方法并不一定会被执行readWaitTimeInSecond- 没拿到写锁的线程,等读锁的时间,单位:秒- 抛出:
Exception
-