关于Threadlocal

原创 2016年05月30日 22:14:58

ThreadLocal类用于创建一个线程本地变量


在Thread中有一个成员变量ThreadLocals,该变量的类型是ThreadLocalMap,也就是一个Map,它的键是ThreadLocal,值就是变量的副本。通过ThreadLocal的get()方法可以获取该线程变量的本地副本,在get()方法之前要首先set(),否则就要重写initialValue()方法。


ThreadLocal的使用场景:

数据库连接:在多线程中,如果使用懒汉式的单例模式创建Connection对象,由于该对象是共享的,那么必须要使用同步方法保证线程安全,这样当一个线程在连接数据库时,那么另外的一个线程只能等待,这样就造成性能降低。如果改为哪里要连接数据库就来进行连接,那么就会频繁的对数据库进行连接,性能还是不高。这时使用ThreadLocal就可以既保证线程安全又可以让性能不会太低。但是ThreadLocal的缺点是占用了较多的空间。


ThreadLocal存放的值是线程封闭、线程间互斥的。


主要用于线程内共享一些数据,避免通过参数来传递。


ThreadLocal和多线程并发没有什么关系。


ThreadLocal模式是为了解决单线程内的跨类跨方法调用的。


ThreadLocal不是用来解决对象共享访问问题的,而只要是提供了保持对象的方法和避免参数传递的方便对象访问的方式。一般情况下,通过ThreadLocal.set()到线程中的对象是该线程自己使用的对象,其他线程是不需要访问的,也访问不到的。各个线程中访问的是不同对象。

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

ThreadLocal简单Demo

彻底理解ThreadLocal

转载来自:http://blog.csdn.net/lufeng20/article/details/24314381 ThreadLocal是什么   早在JDK 1.2的版...

ThreadLocal详解及说明

深入理解ThreadLocal

https://my.oschina.net/clopopo/blog/149368 学习一个东西首先要知道为什么要引入它,就是我们能用它来干什么。所以我们先来看看ThreadLocal对我们到...

正确理解ThreadLocal.pdf

  • 2008-02-26 11:29
  • 108KB
  • 下载

ThreadLocal源码分析

  • 2013-12-24 23:22
  • 492KB
  • 下载

深入研究java.lang.ThreadLocal类

一、概述   ThreadLocal是什么呢?其实ThreadLocal并非是一个线程的本地实现版本,它并不是一个Thread,而是threadlocalvariable(线程局部变量)。...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)