ThreadLocal-线程局部变量

ThreadLocal不是一个线程,而是保存线程本地化对象的容器。多线程环境中,使用ThreadLocal维护变量时,ThreadLocal为每个被维护的变量分配一个独立的变量副本。

    举个例子。例如下面的代码,对应静态变量num,如果不使用ThreadLocal来维护,那么,多线程环境下,最后的输出,如右侧所示。三个线程共享了num变量,num变量和三个线程相互影响。最后的输出,是1~9;

ThreadLocal-线程局部变量_第1张图片

    再看下面的代码。同样是在多线程环境下,对同样的静态变量num,使用ThreadLocal进行维护后,每个线程,都可以分配到一个独立的副本。仔细分析最终输出,会发现,每个线程都得到1~3。也证明了,ThreadLocal为每个线程,维护了一个独立的副本。

ThreadLocal-线程局部变量_第2张图片

你可能感兴趣的:(ThreadLocal-线程局部变量)