关闭

ThreadLocal的理解

标签: ThreadLocal
191人阅读 评论(0) 收藏 举报

       ThreadLocal 不是用来解决共享对象的多线程访问问题的,通过ThreadLocal.set() 到线程中的对象是该线程自己使用的对象,其他线程是不需要访问的,也访问不到的。各个线程中访问的是不同的对象。

       通过ThreadLocal.set()将这个新创建的对象的引用保存到各线程的自己的一个map中,每个线程都有这样一个threadlocalmap,执行ThreadLocal.get()时,各线程从自己的map中取出放进去的对象,因此取出来的是各自自己线程中的对象,ThreadLocal实例是作为threadlocalmap的key来使用的。 

  



0
0
查看评论

ThreadLocal理解与使用

在看FrameWork源码时,在ActivityThread类中有一个ThreadLocal变量,是这么定义的: static final ThreadLocal sThreadLocal = new ThreadLocal();      再加之,项目中和其...
  • u012481172
  • u012481172
  • 2015-09-01 13:12
  • 620

线程学习总结(volatile、synchronized、ThreadLocal)

1、线程内存访问机制         当线程访问某个对象的值的时候,首先通过对象的引用找到对应在堆内存的变量的值,然后把堆内存变量的具体值load到线程本地内存中,建立一个变量副本,之后线程就不再和对象在堆内存变量值有任...
  • zzh87615
  • zzh87615
  • 2014-12-15 11:27
  • 2020

谈谈ThreadLocal和解决线程安全的关系

在这篇文章中我粗略的就我的理解谈了一下ThreadLocal。但是很多时候我们还是会认为ThreadLocal是为了解决线程安全的问题而设计的。这篇文章就我的理解再加上该文章  中很多朋友的回复阐述一下ThreadLocal和线程安全的关系。  首先我们来看一下线程安全问...
  • chengwai26
  • chengwai26
  • 2016-08-09 18:38
  • 1730

多线程中ThreadLocal的理解

1、理解ThreadLocal 在多线程开发的过程中可能会有这样的需求,有些变量或者对象在同一个线程中是共享的,在不同的线程中是隔离的,如何实现? (1)下面的这个例子是演示了在多线程的环境下不同的业务对象使用相同的对象数据时出现了错乱:public class ThreadSingleton ...
  • eff666
  • eff666
  • 2016-09-04 16:07
  • 454

ThreadLocal源码的一些理解

ThreadLocal在工作中经常使用,尤其在Web的请求周期中,常见的使用场景如在SpringMvc中,从登录拦截器中preHandler中set一个全局的变量,在postHanlder时remove,这里很多使用容易忽略remove,因为大多数Web服务器是使用线程池工作的,如果在一个reque...
  • kimichen123
  • kimichen123
  • 2017-01-20 13:37
  • 158

ThreadLocal 内部实现和应用场景

很多人都知道java中有ThreadLocal这个类,但是知道ThreadLocal这个类具体有什么作用,然后适用什么样的业务场景还是很少的。今天我就尝试以自己的理解,来讲解下ThreadLocal类的内部实现和应用场景,如果有什么不对之处,还望大家指正。 首先明确一个概念,那就是Thread...
  • z69183787
  • z69183787
  • 2016-05-24 14:41
  • 6980

volatile、ThreadLocal、synchronized等3个关键字区别

1.volatile volatile主要是用来在多线程中同步变量。 在一般情况下,为了提升性能,每个线程在运行时都会将主内存中的变量保存一份在自己的内存中作为变量副本,但是这样就很容易出现多个线程中保存的副本变量不一致,或与主内存的中的变量值不一致的情况。 而当一个变量被volatile修饰后...
  • paincupid
  • paincupid
  • 2015-08-07 22:51
  • 2784

Java学习整理系列之ThreadLocal的理解

在同步机制中,通过对象的锁机制保证同一时间只有一个线程访问变量。这时该变量是多个线程共享的,使用同步机制要求程序慎密地分析什么时候对变量进行读写,什么时候需要锁定某个对象,什么时候释放对象锁等繁杂的问题,程序设计和编写难度相对较大。而ThreadLocal则从另一个角度来解决多线程的并发访问。Thr...
  • Sup_Heaven
  • Sup_Heaven
  • 2014-06-11 20:30
  • 5381

Python学习之ThreadLocal

[0]:首先引出问题:我们在使用线程的时候,每个线程都使用自己的局部变量,但是,我们如果在线程内部调用某个函数的时候且需要让这个函数处理我们的变量时,就会产生一个问题,必须将该局部变量给传递进该函数.如果局部变量很多就会大大增加函数参数的复杂性。[1]:一个办法是使用全局的dict然后用线程自己作为...
  • pp634077956
  • pp634077956
  • 2016-03-13 13:59
  • 4079

从头认识多线程-4.3 ThreadLocal使用时需要注意的地方

4.3 这一章节我们来讨论一下关于ThreadLocal的使用的时候需要注意的地方ThreadLocal主要的使用是get、set、initialValue这几个方法,具体的使用我们这里不做介绍,下面只是举一些它使用的时候需要注意的地方。1.在get方法的时候出现nullpackage com.ra...
  • raylee2007
  • raylee2007
  • 2016-06-17 15:47
  • 3881
    个人资料
    • 访问:294359次
    • 积分:3718
    • 等级:
    • 排名:第10379名
    • 原创:79篇
    • 转载:176篇
    • 译文:0篇
    • 评论:35条