使用ThreadLocal的思考

简介: 使用ThreadLocal的思考

正文


一般情况下,在使用ThreadLocal时,我们创建的方式如下:

12.png

但是,发现,在创建的时候,设置了一个初始值的方法。那么这个初始值的方法,在怎么时候调用呢?怎么调用呢?

13.png

哎,我们发现,在同一个线程中,仅仅调用了一次,那不同线程呢?代码修改成了下面的

14.png

运行结果发现,实际上,在不同的线程中,第一次调用get方法,是执行初始化方法的。

15.png

如果想在同一个线程中多次调用,应该怎么办,初步的猜测是将这个保存的值废弃掉,然后再次获取初始值。

16.png

运行结果如下:

17.png


总结来说,ThreadLocal的初始化方法在什么时候调用呢?通常情况下,每一个线程仅仅可以调用一次,但是将原始值移除后,还可以继续地调用。通过get的方法我们也会知道底层的运行过程。


18.png

相关文章
|
7月前
|
存储 安全 Java
【ThreadLocal】
【ThreadLocal】
|
27天前
|
存储 Java 数据管理
ThreadLocal的使用
`ThreadLocal`是Java中的线程局部变量工具,确保每个线程都有自己的变量副本,互不干扰。适用于保持线程安全性数据和跨方法共享数据。基本用法包括创建实例、设置和获取值以及清除值。例如,创建ThreadLocal对象后,使用`.set()`设置值,`.get()`获取值,`.remove()`清除值。注意ThreadLocal可能引起内存泄漏,应适时清理,并谨慎使用以避免影响代码可读性和线程安全性。它是多线程编程中实现线程局部数据管理的有效手段。
46 10
|
4月前
|
存储 Java
ThreadLocal 有什么用
ThreadLocal 有什么用
21 0
|
8月前
|
存储 安全 Java
ThreadLocal介绍和应用
ThreadLocal介绍和应用
25 0
|
8月前
|
Java
ThreadLocal详解
ThreadLocal详解
40 0
|
9月前
|
存储 算法 安全
深入详解ThreadLocal
在我们日常的并发编程中,有一种神奇的机制在静悄悄地为我们解决着各种看似棘手的问题,它就是 ThreadLocal 。
21417 9
深入详解ThreadLocal
|
10月前
|
缓存 安全 Java
浅谈ThreadLocal
浅谈ThreadLocal
110 0
|
11月前
|
存储 SQL Java
ThreadLocal的其他应用
request对象跟PageHelper
85 0
|
11月前
|
存储 Java
|
12月前
|
存储 Java 数据库连接
对ThreadLocal的一点了解
ThreadLocal是线程变量,它为每个线程提供单独的存储空间。其主要作用是做线程间的数据隔离,也可以用于在同一个线程间方便地进行数据共享。(对于多线程资源共享,加锁机制采用“时间换空间”,ThreadLocal采用“空间换时间”)
103 0