public class LockUtils extends Object
Constructor and Description |
---|
LockUtils() |
Modifier and Type | Method and Description |
---|---|
static Serializable |
getLockObj(String key)
获取锁对象,用于synchronized(lockObj)
|
static Serializable |
getLockObj(String key,
Object myLock)
获取锁对象,用于synchronized(lockObj)
|
static ReentrantReadWriteLock |
getReentrantReadWriteLock(String key,
Object myLock)
获取读写锁
|
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的原理是一样的 |
public static Serializable getLockObj(String key)
key
- public static Serializable getLockObj(String key, Object myLock)
key
- myLock
- 获取LockObj的锁,可以为nullpublic static ReentrantReadWriteLock getReentrantReadWriteLock(String key, Object myLock)
key
- myLock
- 获取ReentrantReadWriteLock的锁,可以为nullpublic static void runWriteOrWaitRead(String key, Object myLock, ReadWriteLockHandler readWriteLockHandler) throws Exception
key
- myLock
- 获取ReentrantReadWriteLock的锁,可以为nullreadWriteLockHandler
- 小心:该对象的write()方法并不一定会被执行Exception
public static void runWriteOrWaitRead(String key, Object myLock, ReadWriteLockHandler readWriteLockHandler, Long readWaitTimeInSecond) throws Exception
key
- myLock
- 获取ReentrantReadWriteLock的锁,可以为nullreadWriteLockHandler
- 小心:该对象的write()方法并不一定会被执行readWaitTimeInSecond
- 没拿到写锁的线程,等读锁的时间,单位:秒Exception
Copyright © 2021. All rights reserved.