ThreadLocal-线程局部变量

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

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

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容