举报投诉联系我们 手机版 热门标签 名动网
您的位置:名动网 > 鸿蒙系统 鸿蒙OS ThreadLocal

鸿蒙系统 鸿蒙OS ThreadLocal

2023-03-24 21:20 鸿蒙OS开发文档

鸿蒙系统 鸿蒙OS ThreadLocal

鸿蒙系统

鸿蒙系统是由华为技术有限公司开发的一款嵌入式操作系统,它是一款基于Linux内核的多平台、多层次、多任务的实时操作系统。它采用了新的设计理念,将应用层、中间件层、内核层分开,使得应用开发者可以在不同的平台上进行应用开发。

鸿蒙系统采用了新的设计理念,将应用层、中间件层、内核层分开,使得应用开发者可以在不同的平台上进行应用开发。此外,鸿蒙系统还采用了新的安全机制,使得整个操作系统能够保证数据安全性。此外,鸿蒙系统还采用了新的存储机制,使得存储效率大大提升。

此外,鸿蒙系统还采用了新的图形界面设计理念,使得界面易于使用。此外,鸿蒙也集成了语音识别功能,使得人机交互更加便捷。此外,鸿蒙也集成了物联网功能,使得物体之间能够相互通信。

#include  
int main() 
{ 
    printf("Hello World!"); 
    return 0; 
} 

鸿蒙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() 创建一个线程局部变量。

方法总结

修饰符和类型 方法 描述
T get() 返回此线程局部变量的当前线程副本中的值。
protected T initialValue() 返回此线程局部变量的当前线程的“初始值”。
void remove() 删除此线程局部变量的当前线程值。
void set(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 方法。

阅读全文
以上是名动网为你收集整理的鸿蒙系统 鸿蒙OS ThreadLocal全部内容。
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。
相关文章
© 2024 名动网 mdwl.vip 版权所有 联系我们