首页 > 编程语言 >Java中的ThreadLocal和 InheritableThreadLocal

Java中的ThreadLocal和 InheritableThreadLocal

时间:2024-01-15 19:00:28浏览次数:33  
标签:stringThreadLocal Java Thread value ThreadLocal InheritableThreadLocal

Java中的ThreadLocal和 InheritableThreadLocal

package com.example.core.mydemo.java;

/**
 * output
 * Thread-0 ThreadLocal value :null
 * Thread-0 InheritableThreadLocal value :InheritableThreadLocal string
 */
public class ThreadLocalTest {
    public static void main(String[] args) {
        //主线程中赋值
        ThreadLocal<String> stringThreadLocal = new ThreadLocal<>();

        InheritableThreadLocal<String> stringInheritableThreadLocal = new InheritableThreadLocal<>();

        stringThreadLocal.set("ThreadLocal string");
        stringInheritableThreadLocal.set("InheritableThreadLocal string");

        //子线程中分别打印两个变量的信息
        new Thread(() -> {
            System.out.println(
                    Thread.currentThread().getName() + " ThreadLocal value :" + stringThreadLocal.get());
            System.out.println(Thread.currentThread().getName() + " InheritableThreadLocal value :"
                    + stringInheritableThreadLocal.get());
        }).start();


    }
}

在上面的测试代码中,主线程中创建了两个变量,类型分别为:ThreadLocal和InheritableThreadLocal
然后在主线程中创建了一个新的线程
在新的线程中,尝试获取他们的值
从打印信息可以看得出来
对于ThreadLocal获取的值为null,而对于InheritableThreadLocal则能够获取到值

标签:stringThreadLocal,Java,Thread,value,ThreadLocal,InheritableThreadLocal
From: https://www.cnblogs.com/oktokeep/p/17966063

相关文章

  • 【Java 进阶篇】使用 Stream 流和 Lambda 组装复杂父子树形结构(List 集合形式)
    目录前言一、以部门结构为例1.1实体1.2返回VO1.3具体实现1.4效果展示二、以省市县结构为例2.1实体2.2返回VO2.3具体实现2.4效果展示三、文章小结前言在最近的开发中,一星期内遇到了两个类似的需求:返回组装好的部门树、返回组装好的地区信息树,最终都需要返回List集合对象给前端......
  • Java的类加载机制
    Java的类加载机制是指在Java程序运行时,将类文件加载到内存中的一系列步骤。Java的类加载机制遵循着“按需加载”的原则,也就是说,只有在需要用到某个类的时候,才会将这个类的相关信息加载到内存中。这种“按需加载”的设计使得Java程序具备了很好的灵活性和效率。Java的类加载器......
  • Vue 项目离线安装 ArcGIS for JavaScript
    注意:arcgis-js-api在4.18及之后版本,可以通过npminstall@arcgis/[email protected]直接安装在写些博客时,npm能安装的最新版为4.28.10,下面以4.28.10为例,讲解离线安装。在vue3项目中,通过npminstall@arcgis/[email protected]安装,但默认是半本地化的,因为assests资源是通过https://js.ar......
  • java Flink 校验接口数据
    要使用Java编写Flink程序来校验接口的数据,可以按照以下步骤进行操作。首先,需要引入相关依赖包。在pom.xml文件中添加如下依赖项:org.apache.flinkflink-streaming-java_2.12{FLINK版本号}其中{FLINK版本号}应该被替换为所使用的Flink版本号。创建一个新的Java类,并导入必要......
  • 精彩推荐 |【Java技术专题】「重塑技术功底」攻破Java技术盲点之剖析动态代理的实现原
    背景介绍在Java编程中,动态代理的应用非常广泛。它被广泛应用于SpringAOP框架、Hibernate数据查询、测试框架的后端mock、RPC以及Java注解对象获取等领域。静态代理和动态代理与静态代理不同,动态代理的代理关系是在运行时确定的,这使得它在灵活性上更胜一筹。相比之下,静态代理的代理......
  • Java小细节之数组什么情况下相等,什么情况下不相等
    int[]a={1,2,3};int[]b=a;System.out.println(a==b);此时输出trueint[]a={1,2,3};int[]b={1,2,3};System.out.println(a==b);此时输出为false这是因为数组的机制,int[]b=a,相当于让b和a同时管理这个数组,a和b都是代表同一个数组,所以a==b是正确的,此时对数......
  • SparkSQL 操作Hive In Java
    本文的前提条件:SparkSQLinJava1.增加POM依赖<dependency><groupId>com.mysql</groupId><artifactId>mysql-connector-j</artifactId><version>8.0.33</version></dependenc......
  • 【JaveWeb教程】(2)Web前端基础:JavaScript入门不再难:一篇文章教你轻松搞定JavaScript的
    目录1介绍2引入方式3基础语法3.1书写语法3.2变量3.3数据类型和运算符4函数4.1第一种定义格式4.2第二种定义格式html完成了架子,css做了美化,但是网页是死的,我们需要给他注入灵魂,所以接下来我们需要学习JavaScript,这门语言会让我们的页面能够和用户进行交互。1介绍通过代......
  • SpringBoot 2.x 正式停更了。Java 8 就看 Solon 的了!
    最近有好多个新闻说:SpringBoot2.x正式停更了,Java8怎么办?当然用Solon喽!Solon,同时支持jdk8,jdk11,jdk17,jdk21。也支持graalvmnativeimage。既支持java8,也支持java21的:@SolonMainpublicclassApp{publicstaticvoidmain(String[]args){Sol......
  • 安装 Java 开发工具包(JDK)
    在线安装在CentOS上安装JDK打开终端,并使用root或具有管理员权限的用户登录。更新系统软件包列表,确保使用最新的软件包版本:sudoyumupdate安装JDK的依赖包:sudoyuminstalljava-1.8.0-openjdk-devel请注意,此处安装的是OpenJDK8版本的JDK。如果你需要安......