32-其他说明
其他说明
值得一提的是, StampedLock
类中还包含了其他方法,具体如下。
tryReadLock()
和tryReadLock(long time, TimeUnit unit)
:这些方法可帮助线程以读模式获得锁。如果都获取失败了,则第一个方法将立即给出返回结果,而第二个方法将等待由方法传参指定的时间后给出返回结果。另外,这两个方法返回的是一个票据值,开发者需要对该票据值进行校验(stamp != 0)
。tryWriteLock()
和tryWriteLock(long time, TimeUnit unit)
:这些方法可帮助线程以写模式获得锁。如果都获取失败了,那么第一个方法将立即给出返回结果,而第二个方法将等待由方法传参指定的时间后给出返回结果。另外,这两个方法返回的是一个票据值,开发者需要对该票据值进行校验(stamp != 0)
。isReadLocked()
和isWriteLocked()
:这两个方法分别用于判断当前是读锁还是写锁。tryConvertToReadLock(long stamp)
、tryConvertToWriteLock(long stamp)
和tryConvertTo OptimisticRead(long stamp)
:这些方法传入一个票据值作为参数,并尝试把当前锁的模式转换为由方法名指定的锁模式。转换成功后将返回一个新的票据值,否则返回0。unlock(long stamp)
:该方法用于释放对应模式下的锁。