类 TokenCache
java.lang.Object
cn.isliu.core.service.TokenCache
Token缓存组件
提供线程安全的TokenInfo存储和访问功能。使用volatile关键字确保在多线程环境中
对token缓存的读写操作具有可见性保证。
该类设计为轻量级缓存,专门用于存储单个TokenInfo实例。通过volatile字段
确保线程间的可见性,配合外部的同步机制(如读写锁)实现完整的线程安全。
线程安全机制:
- volatile字段确保内存可见性,防止CPU缓存导致的数据不一致
- 配合外部ReentrantReadWriteLock实现原子性操作
- 所有操作都是原子的引用赋值,避免数据竞争
- 从以下版本开始:
- 1.0
- 作者:
- FsHelper
-
构造器概要
构造器 -
方法概要
修饰符和类型方法说明voidclear()清空token缓存 将缓存设置为null,通常在token获取失败或需要强制刷新时调用。booleancompareAndSet(TokenInfo expected, TokenInfo newToken) 原子性地比较并设置token 该方法提供了一种安全的方式来更新token,只有当当前token与期望值相同时才进行更新。get()获取当前缓存的token信息boolean检查缓存中的token是否有效booleanisEmpty()检查缓存是否为空void设置新的token信息到缓存 该操作是原子的,由于使用volatile字段,设置操作对所有线程立即可见。toString()
-
构造器详细资料
-
TokenCache
public TokenCache()
-
-
方法详细资料
-
get
获取当前缓存的token信息- 返回:
- 当前缓存的TokenInfo实例,如果缓存为空则返回null
-
set
设置新的token信息到缓存 该操作是原子的,由于使用volatile字段,设置操作对所有线程立即可见。 通常在外部写锁保护下调用,确保与其他操作的原子性。- 参数:
tokenInfo- 要缓存的TokenInfo实例,可以为null
-
clear
public void clear()清空token缓存 将缓存设置为null,通常在token获取失败或需要强制刷新时调用。 该操作是原子的,由于使用volatile字段,清空操作对所有线程立即可见。 -
isEmpty
public boolean isEmpty()检查缓存是否为空- 返回:
- true表示缓存为空,false表示缓存中有token信息
-
hasValidToken
public boolean hasValidToken()检查缓存中的token是否有效- 返回:
- true表示缓存中有token且仍然有效,false表示缓存为空或token已过期
-
compareAndSet
原子性地比较并设置token 该方法提供了一种安全的方式来更新token,只有当当前token与期望值相同时才进行更新。 虽然volatile保证了可见性,但这个方法在某些高级并发场景下可能有用。 注意:这个方法不是真正的CAS操作,因为Java对象引用的比较和设置不是原子的。 在实际使用中,应该依赖外部的同步机制(如写锁)来确保原子性。- 参数:
expected- 期望的当前token值newToken- 要设置的新token值- 返回:
- true表示更新成功,false表示当前token与期望值不同
-
toString
-