java.lang.ThreadLocal<T>
并发场景中,
使用
ThreadLocal对象,并用其维护一个变量,则可以实现
每个线程都会各自维护自己的相应变量,线程之间不会互相干扰。
例如:
现有prototype范围的一个AOP切面类
TimeRecordLogAspect,其中有状态变量statusFlag。每次切点匹配时,都会新建该类的一个实例,同一线程可能匹配多次。
现需要使statusFlag 由每个线程各自维护,此时可以用
ThreadLocal来实现:
if (threadLocal.get() == null) {
statusFlag = 1;
threadLocal.set(this);
} else {
statusFlag = threadLocal.get().statusFlag;
}