树叶云鸿蒙OS教程:鸿蒙OS ThreadLocal

ThreadLocal

java.lang.Object

|—java.lang.ThreadLocal<T&

public class ThreadLocal<T>
extends Object

此类提供线程局部变量。 这些变量不同于它们的正常对应变量,因为每个访问一个(通过它的 get 或 set 方法)的线程都有它自己的、独立初始化的变量副本。 ThreadLocal 实例通常是希望将状态与线程相关联的类中的私有静态字段(例如,用户 ID 或事务 ID)。

例如,下面的类生成每个线程本地的唯一标识符。 线程的 id 在第一次调用 ThreadId.get() 时被分配,并且在后续调用中保持不变。

 import java.util.concurrent.atomic.AtomicInteger;


 public class ThreadId {
     // Atomic integer containing the next thread ID to be assigned
     private static final AtomicInteger nextId = new AtomicInteger(0);


     // Thread local variable containing each thread's ID
     private static final ThreadLocal<Integer> threadId =
         new ThreadLocal<Integer>() {
             @Override protected Integer initialValue() {
                 return nextId.getAndIncrement();
         }
     };


     // Returns the current thread's unique ID, assigning it if necessary
     public static int get() {
         return threadId.get();
     }
 }

 

只要线程处于活动状态并且 ThreadLocal 实例可访问,每个线程都持有对其线程局部变量副本的隐式引用; 在线程消失后,它的所有线程本地实例副本都将受到垃圾回收(除非存在对这些副本的其他引用)。

构造函数摘要

构造函数描述
ThreadLocal()创建一个线程局部变量。

方法总结

修饰符和类型方法描述
Tget()返回此线程局部变量的当前线程副本中的值。
protected TinitialValue()返回此线程局部变量的当前线程的“初始值”。
voidremove()删除此线程局部变量的当前线程值。
voidset(T value)将此线程局部变量的当前线程副本设置为指定值。
static <S> ThreadLocal<S>withInitial(Supplier<? extends S> supplier)创建一个线程局部变量。
从类 java.lang.Object 继承的方法
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

构造函数详细信息

ThreadLocal

public ThreadLocal()

创建一个线程局部变量。

方法详情

initialValue

protected T initialValue()

返回此线程局部变量的当前线程的“初始值”。 该方法将在线程第一次使用 get() 方法访问变量时调用,除非该线程先前调用了 set(T) 方法,在这种情况下,不会为该线程调用 initialValue 方法。 通常,每个线程最多调用一次此方法,但在随后调用 remove() 和 get() 的情况下,它可能会再次调用。

此实现仅返回 null; 如果程序员希望线程局部变量具有除 null 以外的初始值,则必须将 ThreadLocal 子类化,并重写此方法。 通常,将使用匿名内部类。

返回:

此线程本地的初始值

withInitial

public static <S> ThreadLocal<S> withInitial(Supplier<? extends S> supplier)

创建一个线程局部变量。 变量的初始值是通过调用 Supplier 的 get 方法来确定的。

类型参数:

类型参数名称类型参数描述
S线程本地值的类型

参数:

参数名称参数描述
supplier用于确定初始值的供应商

返回:

一个新的线程局部变量

Throws:

Throw名称Throw描述
NullPointerException如果指定的供应商为null

get

public T get()

返回此线程局部变量的当前线程副本中的值。 如果变量没有当前线程的值,则首先将其初始化为调用 initialValue() 方法返回的值。

返回:

此线程本地的当前线程的值

set

public void set(T value)

将此线程局部变量的当前线程副本设置为指定值。 大多数子类不需要重写此方法,仅依赖于 initialValue() 方法来设置线程局部变量的值。

参数:

参数名称参数描述
value要存储在此线程本地的当前线程副本中的值。

remove

public void remove()

删除此线程局部变量的当前线程值。 如果这个线程局部变量随后被当前线程读取,它的值将通过调用它的 initialValue() 方法重新初始化,除非它的值是由当前线程在中间设置的。 这可能会导致在当前线程中多次调用 initialValue 方法。

文章来源网络,作者:管理,如若转载,请注明出处:https://shuyeidc.com/wp/173770.html<

(0)
管理的头像管理
上一篇2025-03-23 22:49
下一篇 2025-03-23 22:50

相关推荐

  • 站群服务器和普通服务器到底哪个更适合GEO,怎么选?

    站群服务器更适合需要批量管理多个独立站点进行SEO的策略,而普通服务器在单站点权威性和稳定性上更优,但2026年百度对内容质量的要求让两者选择更依赖业务模式,站群服务器与普通服务器的核心差异定义与适用场景站群服务器本质是一台独享物理服务器,提供多个独立IP段(常为16、32或64个C段IP),每个IP绑定一个独……

    2026-07-28
    0
  • 物理服务器和云服务器做站群到底选哪个,哪个更稳定?

    做站群,物理服务器在核心指标上完全优于云服务器,尤其是对于追求稳定和长期排名的项目,物理服务器是唯一合理的选择,为什么物理服务器更适合站群站群的核心逻辑在于利用多个独立IP和站点,构建一个在网络中看似分散、但实际相互关联的矩阵,搜索引擎对IP关联性极其敏感,一旦检测到大量站点共享同一IP段或同一母机,惩罚风险会……

    2026-07-28
    0
  • 国内高防服务器哪家防御真实靠谱,怎么选?

    国内高防服务器哪家防御真实靠谱?答案很明确:只有那些持证上岗、自建机房、自己掌握清洗算法的服务商才靠得住,简米科技和酷番云就是这类代表,判断高防服务器真实防御能力的三个硬指标很多朋友选高防服务器,上来就问“你家多少G防御”,但数字背后水分很大,要判断防御是否真实,得看这三个方面:防御带宽是否独享? 有些服务商宣……

    2026-07-28
    0
  • 裸金属服务器和物理服务器有什么区别?,怎么选?

    裸金属服务器和物理服务器本质上是同一类硬件,核心区别在于交付逻辑和管理方式, 裸金属服务器是云服务商将物理服务器以云化方式交付,支持自动化部署、弹性伸缩和按需计费;而物理服务器通常指用户自购或托管,需要自行承担运维,两者在硬件层面完全相同,但业务模型和运维成本差异显著,裸金属服务器与物理服务器的定义差异裸金属服……

    2026-07-28
    0
  • 做GEO站群选哪家服务器服务商靠谱,怎么选?

    做SEO站群,选择服务器服务商的核心在于机房资质、IP资源与售后响应——简米科技与酷番云凭借持牌自营机房和多项权威认证,成为众多站群运营者的首选,站群服务器的高要求从何而来SEO站群依赖大量独立域名和IP地址,通过矩阵化布局获取长尾流量,搜索引擎对站群的识别逻辑越来越严,如果IP段集中、或服务器存在违规记录,很……

    2026-07-28
    0

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注