使用ThreadLocal的思考

简介: 使用ThreadLocal的思考

正文


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

12.png

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

13.png

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

14.png

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

15.png

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

16.png

运行结果如下:

17.png


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


18.png

相关文章
|
5月前
|
存储 Java
ThreadLocal应用及理解
ThreadLocal应用及理解
48 10
|
6月前
|
Java
ThreadLocal 场景题
ThreadLocal 场景题
38 1
|
7月前
|
存储 Java 数据管理
ThreadLocal的使用
`ThreadLocal`是Java中的线程局部变量工具,确保每个线程都有自己的变量副本,互不干扰。适用于保持线程安全性数据和跨方法共享数据。基本用法包括创建实例、设置和获取值以及清除值。例如,创建ThreadLocal对象后,使用`.set()`设置值,`.get()`获取值,`.remove()`清除值。注意ThreadLocal可能引起内存泄漏,应适时清理,并谨慎使用以避免影响代码可读性和线程安全性。它是多线程编程中实现线程局部数据管理的有效手段。
96 10
|
7月前
|
存储 Java
ThreadLocal 有什么用
ThreadLocal 有什么用
57 0
|
缓存 安全 Java
浅谈ThreadLocal
浅谈ThreadLocal
153 0
|
存储 Java
|
存储 Java
ThreadLocal相关使用
ThreadLocal相关使用
199 0
ThreadLocal相关使用
|
存储 Java
对threadlocal了解多少?
通常情况下,我们创建的变量是可以被任何一个线程访问并修改的。如果想实现每一个线程都有自己的专属本地变量该如何解决呢? JDK 中提供的 ThreadLocal 类正是为了解决这样的问题。 ThreadLocal 类主要解决的就是让每个线程绑定自己的值,可以将 ThreadLocal 类形象的比喻成存放数据的盒子,盒子中可以存储每个线程的私有数据。
|
存储 安全 Java
ThreadLocal 使用详解
ThreadLocal 是线程本地变量。当使用 ThreadLocal 维护变量时,ThreadLocal 为每个使用该变量的线程提供独立的变量副本,所以每一个线程都可以独立地改变自己的副本,而不会影响其它线程
556 0