关于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

  • 2017年10月17日 14:58
  • 131KB
  • 下载

java多线程模式ThreadLocal原理简述及其使用详解

java多线程模式ThreadLocal原理简述及其使用详解,代码下载地址:http://www.zuidaima.com/share/1781557457128448.htm...

ThreadLocal详解及说明

  • 2013年08月19日 14:10
  • 4KB
  • 下载

正确理解ThreadLocal.pdf

  • 2008年02月26日 11:29
  • 108KB
  • 下载

由浅入深全面剖析ThreadLocal

前言这一阵子一直在看Picasso,在看的过程中发现了很多很有意思的东西,有的是以前见过甚至用过但是没有深入关注的,有些是以前根本没有见过的——比如今天要讲的ThreadLocal。(android ...

ThreadLocal源码分析

  • 2013年12月24日 23:22
  • 492KB
  • 下载

java 简单的ThreadLocal示例

  • 2013年03月24日 17:40
  • 6KB
  • 下载

Java并发编程--线程封闭(Ad-hoc、栈、ThreadLocal)

线程封闭(Thread Confinement):仅在单线程内访问数据,不需要同步。 常见应用是:JDBC(Java Database Connectivity)的Connection对象。 1.Ad...

ThreadLocal

  • 2017年09月08日 16:34
  • 2KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:关于Threadlocal
举报原因:
原因补充:

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