首页 > 其他分享 >ThreadLocal 和 InheritableThreadLocal 的区别

ThreadLocal 和 InheritableThreadLocal 的区别

时间:2023-05-23 09:33:23浏览次数:35  
标签:static 区别 threadLocal ThreadLocal inheritableThreadLocal new InheritableThreadLo

结论:同一个 ThreadLocal 变量不能在子线程中获取到,而 InheritableThreadLocal 变量中的值可以在父子线程之间传递。

例子:

public class Main {

    private static ThreadLocal<String> threadLocal = new ThreadLocal<>();
    private static InheritableThreadLocal<String> inheritableThreadLocal = new InheritableThreadLocal<>();

    public static void main(String[] args) {
        threadLocal.set("mainThread");
        inheritableThreadLocal.set("hello");

        Thread thread = new Thread(new Runnable() {
            @Override
            public void run() {
                System.out.println("threadLocal: " + threadLocal.get());    // null
                System.out.println("inheritableThreadLocal: " + inheritableThreadLocal.get());  // hello
            }
        });
        thread.start();
    }
}

输出:

threadLocal: null
inheritableThreadLocal: hello

标签:static,区别,threadLocal,ThreadLocal,inheritableThreadLocal,new,InheritableThreadLo
From: https://www.cnblogs.com/FengZeng666/p/17422345.html

相关文章

  • 【万象奥科】RK3568和RK3399有什么区别?
    ▎简介RK3568和RK3399都是Rockchip公司的处理器,具有不同的特点和适用场景。以下是它们的主要区别和应用场景。▎RK3568RK3568是新一代的高性能处理器,采用了22nm工艺,具有更高的性能和更低的功耗。它支持4K视频解码和编码,支持多种接口和协议,如HDMI、USB、PCIe、Gigabit Ethernet等。......
  • useRef 与 createRef 的区别
    两者区别:createRef每次渲染都会返回一个新的引用,而useRef每次都会返回相同的引用。useRef一般用于函数组件useRef不仅仅是用来管理DOMref的,它还相当于this,可以存放任何变量.当useRef的内容发生变化时,它不会通知您。更改.current属性不会导致组件重新渲染。因为......
  • 【iOS】MD5 与Base64 的区别
    MD5不可逆性(只能加密)。任意长度的明文字符串,加密后得到的密文字符串是长度固定的。Base64可逆性(能加密和解密)。可以将图片等二进制文件转换为文本文件。可以把非ASCII字符的数据转换成ASCII字符,避免不可见字符。......
  • UserThreadLocal简单使用
    1packagecom.huoziqi.springboot.utils;23/**4*@version1.05*@Author作者名6*@Date2022/10/2211:167*/89importcom.huoziqi.springboot.entity.User;1011/**12*保存用户信息13*/14publicclassUserThreadLocal{1516......
  • 【软考——系统架构师】架构、系分、软设的区别和联系
    ......
  • MSSQLServer和SQL Server Express、LocalDB的区别
    转载:https://www.cnblogs.com/lucky-donkey/p/13544916.html MSSQLServer:全称MicrosoftSQL Server,微软的数据库服务。SQLServerExpress:MicrosoftSQL Server的一个免费版,功能上有一些限制。                  1.数据库的大小限制:SQ......
  • java中JDK和JRE有什么区别?
    JavaDevelopmentKit(JDK)和JavaRuntimeEnvironment(JRE)是两个不同的Java发行版。JDK是Java开发者所必需的软件开发工具包,包含了Java编译器、Java虚拟机(JVM)、Java运行时环境(JRE)以及各种Java开发工具,它可以用来开发和编译Java应用程序。除了JRE所包含的内容外,JDK还包含开......
  • 置换贴图和一般贴图的区别
    置换贴图这种效果通常是让点的位置沿面法线移动一个贴图中定义的距离。它使得贴图具备了表现细节和深度的能力,且可以同时允许自我遮盖,自我投影和呈现边缘轮廓。>>高度图,视差贴图(Bump-maps),置换贴图(displacement),法线贴图的本质:https://zhuanlan.zhihu.com/p/266434175>>置换贴......
  • 函数传参类型为数组时,int*和char*的区别
    1.现象(1)假设有一个int型数组,我们先用int*给函数传参#define_CRT_SECURE_NO_WARNINGS1#include<stdio.h>voidtest(int*arr){ arr[1]=8;}intmain(){ intarr[]={7,3,4,6,8,9,1,5,2,10};test(arr); printf("%d\n",arr[0]); printf("%d",arr......
  • 手撕ThreadLocal源码
    1. 图解  722. 代码  72代码在com.powernode.threadlocalTestpackagecom.powernode.threadlocal;//这里是主main方法72publicclassTest{publicstaticvoidmain(String[]args){//获取Thread对象Threadthread=Thread.currentThread();......