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

本文包括:Thread 的定义,注意点和Demo例子。
  • u014077165
  • u014077165
  • 2014年08月14日 10:18
  • 747

threadLocal的比喻很到位

threadLocal的比喻很到位 可以总结为一句话:ThreadLocal的作用是提供线程内的局部变量,这种变量在线程的生命周期内起作用,减少同一个线程内多个函数或者组件之间一些公共变量的...
  • njZOOM
  • njZOOM
  • 2016年06月27日 14:19
  • 441

ThreadLocal面试题

ThreadLocal常见面试问题
  • caoyishuai100
  • caoyishuai100
  • 2017年04月01日 16:49
  • 641

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

在同步机制中,通过对象的锁机制保证同一时间只有一个线程访问变量。这时该变量是多个线程共享的,使用同步机制要求程序慎密地分析什么时候对变量进行读写,什么时候需要锁定某个对象,什么时候释放对象锁等繁杂的问...
  • Sup_Heaven
  • Sup_Heaven
  • 2014年06月11日 20:30
  • 5382

Java多线程编程-(10)-看了这篇关于ThreadLocal的原理应该透彻了

Java多线程编程-(1)-线程安全和锁Synchronized概念 Java多线程编程-(2)-可重入锁以及Synchronized的其他基本特性 Java多线程编程-(3)-从一个错误...
  • bntX2jSQfEHy7
  • bntX2jSQfEHy7
  • 2017年10月21日 00:00
  • 130

ThreadLocal的设计理念与作用

Java中的ThreadLocal类允许我们创建只能被同一个线程读写的变量。因此,如果一段代码含有一个ThreadLocal变量的引用,即使两个线程同时执行这段代码,它们也无法访问到对方的Thread...
  • u011860731
  • u011860731
  • 2015年09月25日 14:37
  • 5679

使用ThreadLocal+Filter处理连接池的缺点

现在网上有很多推荐利用ServletFilter和ThreadLocal来处理数据库连接池或者是Hibernate的Session工厂,原理就是结合ThreadLocal使整个请求过程用的是同一个连接...
  • chensheng913
  • chensheng913
  • 2005年08月23日 10:09
  • 8694

Spring单例模式与线程安全ThreadLocal

Spring框架里的bean,或者说组件,获取实例的时候都是默认的单例模式,这是在多线程开发的时候要尤其注意的地方。 单例模式的意思就是只有一个实例。单例模式确保某一个类只有一个实例,而且自行实...
  • owen5630
  • owen5630
  • 2015年08月17日 23:26
  • 2707

servlet 和 threadlocal 与 web容器

在传统的Web开发中,我们处理Http请求最常用的方式是通过实现Servlet对象来进行Http请求的响应。Servlet是J2EE的重要标准之一,规定了Java如何响应Http请求的规范。通过Htt...
  • ningguixin
  • ningguixin
  • 2013年12月03日 10:48
  • 4035

并发编程之ThreadLocal、Volatile、synchronized、Atomic关键字扫盲

前言对于ThreadLocal、Volatile、synchronized、Atomic这四个关键字,我想一提及到大家肯定都想到的是解决在多线程并发环境下资源的共享问题,但是要细说每一个的特点、区别、...
  • u010687392
  • u010687392
  • 2016年01月21日 10:25
  • 6848
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:关于Threadlocal
举报原因:
原因补充:

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