美文网首页
多个线程先后设置ThreadLocal可能出现的问题

多个线程先后设置ThreadLocal可能出现的问题

作者: 晨暮时代 | 来源:发表于2019-05-15 11:21 被阅读0次

示例代码:

    //  第一步
    LocalThreadUtil.setCustCode(custCode);
try{
    //  第二步
    Object custCode = LocalThreadUtil.getCustCode();
} finally {
     // 第三步
     LocalThreadUtil.removeCustCode();
}

现有A线程和B线程先后访问上诉两块代码,假设A线程设置custCode为a,B线程设置custCode为b,倘若执行正常,那么A线程在getCustCode()的时候会得到a,B线程则会得到b。

但,事情总不会每次都发展得顺利。

假设A线程由于意外而没有执行第三步,那么之前设置的custCode也就不会从ThreadLocal移除;之后执行B线程,也由于意外而没有执行第一步,这时候B线程在getCustCode()的时候却发现,得到的却是之前A线程设置的值。

打印A、B两线程,发现它们的线程ID是同一个!那么问题便很好解释了。

当然,A、B线程之间可能还隔着几个线程正常执行。

相关文章

  • 多个线程先后设置ThreadLocal可能出现的问题

    示例代码: 现有A线程和B线程先后访问上诉两块代码,假设A线程设置custCode为a,B线程设置custCode...

  • ThreadLocal实现原理揭秘

    ThreadLocal是什么?对java多线程有了解的人都清楚,在多个线程程序中,会出现线程安全性问题,即多线程是...

  • ThreadLocal

    Thread 同一个变量在多线程访问的环境下,可能出现线程安全的问题。ThreadLocal通过创建线程副本的方式...

  • ThreadLocal原理探究

    2.1.11 ThreadLocal 多线程访问同一个共享变量特别容易出现并发问题,特别是多个线程需要对一个共享变...

  • ThreadLocal原理探究

    2.1.11 ThreadLocal 多线程访问同一个共享变量特别容易出现并发问题,特别是多个线程需要对一个共享变...

  • ThreadLocal详解

    1 ThreadLocal简介 多线程访问同一个共享变量的时候容易出现并发问题,特别是多个线程对一个变量进行写入的...

  • 详解:关于Java中的ThreadLocal

    一、ThreadLocal简介 多线程访问同一个共享变量的时候容易出现并发问题,特别是多个线程对一个变量进行写入的...

  • IOS多线程 之 线程安全,线程同步,读写安全详解

    什么是线程不安全和线程安全? 线程不安全:是指不提供加锁机制保护,有可能出现多个线程先后更改数据造成所得到的数据是...

  • ThreadLocal

    ThreadLocal的作用 ThreadLocal是为了隔离多个线程的数据共享。每个线程拥有自己的对象,不会和其...

  • 子线程为什么不能刷新ui

    UIKit 不是线程安全的框架,当多个线程进行UI操作,有可能出现资源抢夺,导致问题

网友评论

      本文标题:多个线程先后设置ThreadLocal可能出现的问题

      本文链接:https://www.haomeiwen.com/subject/sazuaqtx.html