Java-API简析_java.lang.ThreadLocal<T>类(基于 Latest JDK)(浅析源码)

【版权声明】未经博主同意,谢绝转载!(请尊重原创,博主保留追究权)
https://blog.csdn.net/m0_69908381/article/details/131630407
出自【进步*于辰的博客】

因为我发现目前,我对Java-API的学习意识比较薄弱,需要慢慢习惯使用Java-API,乃至剖析源码来提升自己的源码阅读能力和编码素质。
大家如果需要Java-API文档,我上传了【https://download.csdn.net/download/m0_69908381/87691693】。

文章目录

  • 1、概述
  • 2、构造方法摘要
    • 2.1 null
  • 3、方法摘要
    • 3.1 T get()
    • 3.2 protected T initialValue()
    • 3.3 void remove()
    • 3.4 void set(T value)

1、概述

直接已知子类:
InheritableThreadLocal


public class ThreadLocal<T>extends Object

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

例如,在下面的类中,私有静态 ThreadLocal 实例(serialNum)为调用该类的静态 SerialNum.get() 方法的每个线程维护了一个“序列号”,该方法将返回当前线程的序列号。(线程的序列号是在第一次调用 SerialNum.get() 时分配的,并在后续调用中不会更改。)

public class SerialNum {
    // The next serial number to be assigned
    private static int nextSerialNum = 0;

    private static ThreadLocal serialNum = new ThreadLocal() {
        protected synchronized Object initialValue() {
            return new Integer(nextSerialNum++);
        }
    };

    public static int get() {
        return ((Integer) (serialNum.get())).intValue();
    }
}

每个线程都保持一个对其线程局部变量副本的隐式引用,只要线程是活动的并且 ThreadLocal 实例是可访问的;在线程消失之后,其线程局部实例的所有副本都会被垃圾回收(除非存在对这些副本的其他引用)。

从以下版本开始:
1.2

2、构造方法摘要

2.1 null

创建一个线程本地变量。

3、方法摘要

3.1 T get()

返回此线程局部变量的当前线程副本中的值。

3.2 protected T initialValue()

返回此线程局部变量的当前线程的初始值。

3.3 void remove()

移除此线程局部变量的值。

3.4 void set(T value)

将此线程局部变量的当前线程副本中的值设置为指定值。


本文暂缓更新。文章来源地址https://uudwc.com/A/ePb4q

原文地址:https://blog.csdn.net/m0_69908381/article/details/131630407

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请联系站长进行投诉反馈,一经查实,立即删除!

h
上一篇 2023年07月10日 07:58
42. 会话划分问题
下一篇 2023年07月10日 07:59