`
苦行僧_83890
  • 浏览: 892 次
文章分类
社区版块
存档分类
最新评论

java 线程篇 Threadlocal 新知

阅读更多

天热无聊,打开项目学习下项目里的代码,看到有大牛用到了ThreadLocal 这个类了,好奇心顿时不由而来,经各方打探和学习总结了下,其实也不是总结,就是把人家告诉我的写到这,然后告诉大家,如有雷同,纯属巧合,如有错误,还请指点。

 

首先大牛举了个厕所蹲坑的例子:

假如在厕所的每个蹲坑隔间里没有卫生纸,每个人只能在隔间外面一个公共的地方抽纸,这个擦屁股的手纸是公用的,且某个时刻只能有一个人去抽纸。这样在生活中,如果人多,就会排队,效率地下(暂且不说万一没有纸会怎么样) 内急的岂不是屎涨裤裆里了。所以每个蹲坑间放一卷手纸。这样,原来公用的手纸都被各个蹲坑间私有化了,外界不能干涉,即便别人蹲坑的时候用没了纸,也不会打扰到你蹲坑的心情。

 

 

好下面我们在稍加专业点来解释

如果公共变量多个线程去访问 不加锁会导致变量值混乱,无法控制。
加锁又会导致并发性能。加锁的意思就好比厕所里需要拿手纸的都给我一个个排队拿。所以多放几份了。各自用各自的 互不影响。

专业点说:

 

当你的公共变量  A线程对该变量的修改不会影响到B线程,同理B线程也不会影响到A线程,即各个线程对共享变量的修改是独立的,多个线程之间不需要实时共享变量数据时,才可以使用ThreadLocal。

 

再就是有些多线程用不到Threadlocal,比如减库存操作可能会有多个线程去减。但是A线程的修改  B线程必须要能够读到。此时就不能用ThreadLocal了。

 

不知道大家ThreadLocal 明白了没,如果有的地方写错了,还请指点出来。

最后感谢益达 大牛的热心解读,他的更多博客请参考http://iamyida.iteye.com/

 

 

 

 

 

分享到:
评论

相关推荐

    java ThreadLocal多线程专属的变量源码

    java ThreadLocal多线程专属的变量源码java ThreadLocal多线程专属的变量源码java ThreadLocal多线程专属的变量源码java ThreadLocal多线程专属的变量源码java ThreadLocal多线程专属的变量源码java ThreadLocal多...

    java 简单的ThreadLocal示例

    java 简单的ThreadLocal示例

    java事务 - threadlocal

    ThreadLocal保证一个类的实例变量在各个线程中都有一份单独的拷贝, 从而不会影响其他线程中的实例变量

    简单分析Java线程编程中ThreadLocal类的使用共

    简单分析Java线程编程中ThreadLocal类的使用共4页.pdf.zip

    java线程详解

    Java线程:概念与原理 Java线程:创建与启动 Java线程:线程状态的转换 ...Java线程:深入ThreadLocal 一、标准例子 二、不用ThreadLocal 三、自己实现个ThreadLocal 四、透过现象看本质 Java线程:大总结

    java中ThreadLocal详解

    详解java底层实现原理,ThreadLocal底层实现的数据结构,为什么不会导致内存泄露

    Java单线程ThreadLocal串值问题解决方案

    主要介绍了Java单线程ThreadLocal串值问题解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

    Java多线程 之 临界区、ThreadLocal.docx

    synchronized关键字不属于方法特征签名的一部分,所以可以在覆盖方法的时候加上去。也就是说,在父类的方法声明上可以没有synchronized关键字,而在子类覆盖该方法时加上synchronized关键字。 注意:使用...

    Java中ThreadLocal的设计与使用

    Java中ThreadLocal的设计与使用.doc

    Java资料-详解ThreadLocal

    Java资料—详解ThreadLocal ;Java资料—详解ThreadLocal ;Java资料—详解ThreadLocal ;Java资料—详解ThreadLocal Java资料—详解ThreadLocal

    Java多线程编程中ThreadLocal类的用法及深入

    早在 JDK 1.2 的时代,java.lang.ThreadLocal 就诞生了,它是为了解决多线程并发问题而设计的,只不过设计得有些难用,所以至今没有得到广泛使用。其实它还是挺有用的,不相信的话,我们一起来看看这个例子吧。 一个...

    ThreadLocal详解及说明

    关于线程变量ThreadLocal的介绍以及说明. 关于线程变量ThreadLocal的介绍以及说明. 关于线程变量ThreadLocal的介绍以及说明. 关于线程变量ThreadLocal的介绍以及说明. 关于线程变量ThreadLocal的介绍以及说明. ...

    ThreadLocal详解

    java 多线程 ThreadLocal

    java线程本地变量ThreadLocal详解

    ThreadLocal则为每一个线程提供了一个变量副本,从而隔离了多个线程访问数据的冲突,ThreadLocal提供了线程安全的对象封装,下面我们就来详细了解一下吧

    简单分析Java线程编程中ThreadLocal类的使用

    主要介绍了Java线程编程中ThreadLocal类的使用,包括使用其对共享变量的操作的分析,需要的朋友可以参考下

    线程ThreadLocal机制实现例子

    本例以序列号生成的程序为例,展示ThreadLocal的使用

    Java多线程编程之ThreadLocal线程范围内的共享变量

    主要介绍了Java多线程编程之ThreadLocal线程范围内的共享变量,本文讲解了ThreadLocal的作用和目的、ThreadLocal的应用场景、ThreadLocal的使用实例等,需要的朋友可以参考下

    彻底理解Java 中的ThreadLocal

    主要介绍了彻底理解Java 中的ThreadLocal的相关资料,需要的朋友可以参考下

    彻底理解Java中的ThreadLocal

    ThreadLocal翻译成中文比较准确的叫法应该是:线程局部变量。使用这个工具类可以很简洁地编写出优美的多线程程序。接下来通过本文给大家介绍Java中的ThreadLocal,需要的朋友可以参考下

    java线程学习笔记

    2.3 线程本地存储(Java.lang.ThreadLocal) 15 2.4 线程阻塞 17 2.4.1 调用sleep(millisecond)使任务进入休眠状态 17 2.4.2 等待输出与输入 17 2.4.3 对象锁不可用 17 2.4.4 通过wait()使线程挂起。 17 2.5 线程...

Global site tag (gtag.js) - Google Analytics