创新互联坚持“要么做到,要么别承诺”的工作理念,服务领域包括:成都网站建设、网站设计、企业官网、英文网站、手机端网站、网站推广等服务,满足客户于互联网时代的龙泉驿网站设计、移动媒体设计的需求,帮助企业找到有效的互联网解决方案。努力成为您成熟可靠的网络建设合作伙伴!
java.lang.Object
|---java.lang.ThreadLocal
public class ThreadLocal
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 threadId =
new ThreadLocal() {
@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 | withInitial(Supplier extends S> supplier) | 创建一个线程局部变量。 |
从类 java.lang.Object 继承的方法 |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
public ThreadLocal()
创建一个线程局部变量。
protected T initialValue()
返回此线程局部变量的当前线程的“初始值”。 该方法将在线程第一次使用 get() 方法访问变量时调用,除非该线程先前调用了 set(T) 方法,在这种情况下,不会为该线程调用 initialValue 方法。 通常,每个线程最多调用一次此方法,但在随后调用 remove() 和 get() 的情况下,它可能会再次调用。
此实现仅返回 null; 如果程序员希望线程局部变量具有除 null 以外的初始值,则必须将 ThreadLocal 子类化,并重写此方法。 通常,将使用匿名内部类。
返回:
此线程本地的初始值
public static ThreadLocal withInitial(Supplier extends S> supplier)
创建一个线程局部变量。 变量的初始值是通过调用 Supplier 的 get 方法来确定的。
类型参数:
类型参数名称 | 类型参数描述 |
---|---|
S | 线程本地值的类型 |
参数:
参数名称 | 参数描述 |
---|---|
supplier | 用于确定初始值的供应商 |
返回:
一个新的线程局部变量
Throws:
Throw名称 | Throw描述 |
---|---|
NullPointerException | 如果指定的供应商为null |
public T get()
返回此线程局部变量的当前线程副本中的值。 如果变量没有当前线程的值,则首先将其初始化为调用 initialValue() 方法返回的值。
返回:
此线程本地的当前线程的值
public void set(T value)
将此线程局部变量的当前线程副本设置为指定值。 大多数子类不需要重写此方法,仅依赖于 initialValue() 方法来设置线程局部变量的值。
参数:
参数名称 | 参数描述 |
---|---|
value | 要存储在此线程本地的当前线程副本中的值。 |
public void remove()
删除此线程局部变量的当前线程值。 如果这个线程局部变量随后被当前线程读取,它的值将通过调用它的 initialValue() 方法重新初始化,除非它的值是由当前线程在中间设置的。 这可能会导致在当前线程中多次调用 initialValue 方法。
网站题目:创新互联鸿蒙OS教程:鸿蒙OSThreadLocal
文章分享:http://www.mswzjz.cn/qtweb/news39/513939.html
攀枝花网站建设、攀枝花网站运维推广公司-贝锐智能,是专注品牌与效果的网络营销公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 贝锐智能