ThreadLocal与InheritableThreadLocal的区别

PX4 磁罗盘干扰分析 无人机上的电机电流会干扰无人机上搭载的磁罗盘,PX4官方提供了一些方式,通过分析飞行日志,判断电机是否对磁罗盘有严重影响。 阅读详情

ThreadLocal:实现一个线程本地的存储,也就是说,每个线程都有自己的局部变量。所有线程都共享一个ThreadLocal对象,但是每个线程在访问这些变量的时候能得到不同的值,每个线程可以更改这些变量并且不会影响其他的线程,并且支持null值。(Handlder中有使用ThreadLocal,EventBus中也有应用到的)

    private String TAG = "MainActivity.class";
    private ThreadLocal<String> threadLocal = new ThreadLocal();
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        threadLocal.set("张三");
        new Thread("哒哒哒"){
            @Override
            public void run() {
                super.run();
                threadLocal.set("李四");
                getLocalDate();
            }
        }.start();
        new Thread("啦啦啦"){
            @Override
            public void run() {
                super.run();
                getLocalDate();
            }
        }.start();
        getLocalDate();
    }
    public void getLocalDate() {
        Log.d(TAG, "Thread:"+Thread.currentThread().getName()
                +"---------ThreadID:"+Thread.currentThread().getId()+"-------ThreadLocal获取的数据:"+threadLocal.get());

    }

得到的结果是:

从这里来看,当我们在主线程中给ThreadLocal 只在获取当前线程所赋值的数据,这样可以解决很多线程之间的逻辑处理,把他当线程中的一个变量来使用也很好。

针对源码分析:https://blog.youkuaiyun.com/singwhatiwanna/article/details/48350919

InheritableThreadLocal:使用大致与ThreadLocal的使用方法相同,只不过原理有些不同,内部处理时如果在主线程中给他赋值,在子线程中也可以获取,当然如果在子线程中赋值,也只是在当前线程中可以得到当前的赋值数据。

    private String TAG = "MainActivity.class";
    private InheritableThreadLocal<Integer> inheritableThreadLocal = new InheritableThreadLocal();
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        inheritableThreadLocal.set(25);
        new Thread("哒哒哒"){
            @Override
            public void run() {
                super.run();
                inheritableThreadLocal.set(26);
                getLocalDate();
            }
        }.start();
        new Thread("啦啦啦"){
            @Override
            public void run() {
                super.run();
                getLocalDate();
            }
        }.start();
        getLocalDate();
    }
    public void getLocalDate() {
        Log.d(TAG, "Thread:"+Thread.currentThread().getName()
                +"---------ThreadID:"+Thread.currentThread().getId()+"-------InheritableThreadLocal获取的数据:"+inheritableThreadLocal.get());
    }

运行结果:

 

 

人形机器人电路板和算法分析 人形机器人电路板与算法深度剖析 电路板领域:人形机器人电子系统分为计算、驱动、感知、能源、通信五大模块。主控板采用高性能SoM(如NVIDIA Jetson AGX Orin),需满足严格电源完整性(PDN)与信号完整性(SI)要求;关节驱动板集成MCU、GaN/SiC功率器件及高精度编码器接口,采用刚柔结合PCB以适应狭小空间。挑战包括热-振可靠性(85°C/10G振动)、高密度互连(3mil线宽)及EMC兼容性。 算法领域:运动控制依赖MPC(模型预测控制)与强化学习(RL),实现实时动态平衡;感知算法 阅读详情

相关推荐

等保: Postgresql配置ssl链接

等保: postgresql配置ssl链接完整方案和避坑指南

weixin_43557605的博客 4382

ThreadLocal和InheritableThreadLocal解析

一、两者区别:    ThreadLocal:为每一个线程创建一个副本,每个副本线程隔离。但是他不支持继承。    InheritableThreadLocal:支持继承。这里的继承不是extends,是指线程的继承。也就是说新起一个线程可以拥有老线程的数据。二、原理:    这里要先说另一个概念ThreadLocalMap。他和普通map差不多,也是key-value结构,key为threadl...

qq1805696978的博客 1537

解放双手!利用海康VM全局脚本+通讯管理打造自动化视觉控制系统

本文深入探讨了如何利用海康VisionMaster(VM)的全局脚本和通讯管理功能,打造高效自动化视觉控制系统。通过全局变量实现数据共享与动态调整,结合多协议通讯管理,提升系统响应速度与智能化水平,适用于工业4.0环境下的复杂视觉检测与决策场景。

weixin_28720573的博客 424

JAVA系列: ThreadLocal和InheritableThreadLocal的区别

ThreadLocal 问题 多个线程要同时访问一个变量或对象时,如果这些线程中既有读又有写操作时,就会导致变量值或对象的状态出现混乱,从而导致程序异常。 ThreadLocal设计的目的 为了能够在当前线程中有属于自己的变量,并不是为了解决并发或者共享变量的问题。该变量对其他线程而言是隔离的 特性 ThreadLocal可以让我们拥有当前线程的变量 往ThreadLocal中填充的变量属于当前线程, 将一个对象和线程绑定在一起,就只有ThreadLocal才能...

NIO4444 1058

LSS(Lift, Splat, Shoot)算法解析

**LSS(Lift, Splat, Shoot)** 是一个比较经典的自下而上的构建BEV特征的3D目标检测算法,通过将图像特征反投影到3D空间生成伪视锥点云,通过`Efficientnet`算法提取云点的深度特征和图像特征并对深度信息进行估计,最终将点云特征转换到BEV空间下进行特征融合和后续的语义分割任务。 本篇按照LSS代码的运行逻辑,结合论文对LSS算法进行解析。

超爱吃小蛋糕的66的博客 8684

扩视机器视觉—Halcon机器视觉48个实战项目六(检测定位角度)

此项目halcon检测检测定位角度问题,并显示。

qq_21516871的博客 1093

InheritableThreadLocal和ThreadLocal的区别和使用场景

快人快语,先说结论,InheritableThreadLocal 是 ThreadLocal 的一个子类,它包含ThreadLocal 的所有功能并且扩展了 ThreadLocal 的功能,允许父线程中的 InheritableThreadLocal 变量的值被子线程继承。这意味着,当创建一个新的线程时,这个新线程可以访问其父线程中 InheritableThreadLocal 变量的值。

怪力乌龟的博客 1753

FineReport 动态列切换统计维度

目标: 自己选择统计维度进行数据的汇总统计数据集参数实现动态列。

Davina_yu的博客 1053

InheritableThreadLocal

InheritableThreadLocal<T> InheritableThreadLocal<T> 类是 ThreadLocal<T> 类的子类,译为可继承的 ThreadLocal。 public class InheritableThreadLocal<T> extends ThreadLocal<T> { childValue(T) 在 ThreadLocal 类中直接抛出一个 UnsupportedOperationE

weixin_45033002的博客 348

【Proteus仿真】用24C04与1602LCD设计的简易加密电子密码锁

【Proteus仿真】用24C04与1602LCD设计的简易加密电子密码锁

perseverance51博客 1121

C#部署YOLO三种方案深度实测:OpenCV DNN vs ONNX Runtime vs TensorRT

在工业视觉项目落地阶段,C#生态下部署YOLO模型主要有三条技术路线。很多开发者仅凭经验选型,往往在部署后期踩中性能瓶颈、兼容故障、维护成本超标的坑。本文基于工控机常见硬件配置,针对YOLOv8系列模型做控制变量实测,从推理性能、部署难度、工业稳定性、综合成本等多个维度做横向对比,给出可直接落地的选型结论。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 464

ThreadLocal与InheritableThreadLocal区别

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34360651的博客 574

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

ThreadLocal、InheritableThreadLocal、TransmittableThreadLocal三者之间区别

本文主要介绍ThreadLocal、InheritableThreadLocal、TransmittableThreadLocal三者之间区别、如何使用、什么场景使用以及对原理和源码的介绍。介绍原理的时候通过最直白、最易懂的语言争取让大家了解三者之间的区别,以及日常如何把他们使用起来 ThreadLocal ThreadLocal解决的是每个线程可以拥有自己线程的变量实例。可以从隔离的角度解决变量线程安全的问题。 举个例子: 用户登陆后将用户的信息保存到ThreadLocal中,ThreadLocal .

weixin_43954303的博客 6749

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

ThreadLocal和InheritableThreadLocal的使用以及区别

记录一下ThreadLocal和InheritableThreadLocal的差别以及用法。已知这两个类都是做线程本地缓存的。

qq_52148082的博客 475

ThreadLocal、InheritableThreadLocal、TransmittableThreadLocal 使用以及区别

ThreadLocal、InheritableThreadLocal、TransmittableThreadLocal 使用以及区别

昨日晨曦的博客 1054

ThreadLocal和InheritableThreadLocal的区别

1、ThreadLocal 主要解决每个线程绑定自己的值,达到线程直接隔离。 1.1如果第一次访问没有设定初始值,返回为null 1.2线程直接的隔离性//继承ThreadLocal类 public class ThreadLocalExt extends ThreadLocal{ }//创建两个线程,分别设置自己的值 public class ThreadA extends Thread{

Tracycater的专栏 1406

InheritableThreadLocal用法与ThreadLocal的区别

public class TestThreadLocal { static final String VALUE01 = "test01"; static final String VALUE02 = "test02"; public static void main(String[] args) throws InterruptedException { ThreadLocal t

王广帅--游戏开发-服务器开发 1499

threadlocal与inheritableThreadLocal的区别

package com.dev.test; public class MyThreadLocal {      /**  * 用于验证threadlocal与inheritableThreadLocal的区别  * @param args  */     public static void main(String[] args) {         ThreadLocal m

guying4875的专栏 665

java中创建线程TransmittableThreadLocal和ThreadLocal还有InheritableThreadLocal有什么区别和联系?

java中创建线程TransmittableThreadLocal和ThreadLocal还有InheritableThreadLocal有什么区别和联系?

gb4215287的博客 666

InheritableThreadLocal和ThreadLocal和TransmittableThreadLocal的区别

InheritableThreadLocal和ThreadLocal和TransmittableThreadLocal的区别

weixin_59244784的博客 529

ThreadLocal、InheritableThreadLocal、TransmittableThreadLocal三者区别

子线程继承父线程的变量值,但可以通过 childValue 方法自定义继承的值。通过合理选择这三种工具,可以满足不同场景下的线程变量管理需求。

weixin_64317904的博客 852

MDC、ThreadLocal、InheritableThreadLocal的区别和联系

ThreadLocal使用来存储线程本地变量的。MDC的底层使用的就是ThreadLocal来存储的,只不过是做了一些安全校验,如MDC取值时ThreadLocalMap==null怎么办。InheritableThreadLocal支持子线程继承父线程中的thread-local值。留个问题哈:现在项目中很多使用多线程的地方都是使用的线程池,线程池中的线程并不具备父子关系,这样threadlocal怎么传递?

背着梦的幸存者 1895

ThreadLocal、InheritableThreadLocal 和TransmittableThreadLocal 的区别

描述 用途 ThreadLocal 线程本地变量 线程本地存储 InheritableThreadLocal 可继承的线程本地变量 线程本地存储、线程间共享 TransmittableThreadLocal (阿里开源的,需要导包) 可传递的线程本地变量 线程本地存储、线程间共享、线程池共享 注:其存储功能体现在Thread,ThreadLocal只能操作本地数据,底层是通过ThreadLocalMap实现的,而ThreadLocalMap类通过key为ThreadLocal类...

weixin_45789266的博客 645
上一篇: Android适配全面屏(华为荣耀8,小米8,三星S8等)
下一篇: Android 清理缓存、优化内存空间
探索者丶
博客等级 码龄10年 29粉丝 32原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值