DRP-ThreadLocal简单的理解
简单就是jar一类套餐包。在一个简单的事情是一个工具类!该工具可以做?该工具被用来写多线程程序,行。多线程是有效的。你只能去网上找资料,由于今天我们仅仅来介绍ThreadLocal的知识。
我们来看看ThreadLocal封装的接口方法吧:
void set(Object value)设置当前线程的线程局部变量的值。
public Object get()该方法返回当前线程所相应的线程局部变量。
public void remove()将当前线程局部变量的值删除,目的是为了降低内存的占用,该方法是JDK 5.0新增的方法。
须要指出的是,当线程结束后,相应该线程的局部变量将自己主动被垃圾回收,所以显式调用该方法清除线程的局部变量并非必须的操作,但它能够加快内存回收的速度。
方法是一个延迟调用方法,在线程第1次调用get()或set(Object)时才运行,而且仅运行1次。
ThreadLocal中的缺省实现直接返回一个null。protected Object initialValue()返回该线程局部变量的初始值,该方法是一个protected的方法。显然是为了让子类覆盖而设计的。
上面这些方法我们能够api文档查询到的。到了如今的ThreadLocal也变得更加强大了,增加了泛型的概念。void set(T value)、T get()以及T initialValue(),我们能够对多种数据类型进行操作了。
在同步机制中,通过对象的锁机制保证同一时间仅仅有一个线程訪问变量。这时该变量是多个线程共享的,使用同步机制要求程序慎密地分析什么时候对变量进行读写。什么时候须要锁定某个对象,什么时候释放对象锁等繁杂的问题。程序设计和编写难度相对较大。
而ThreadLocal则从还有一个角度来解决多线程的并发訪问。在编写多线程代码时,能够把不安全的变量封装进ThreadLocal。
因为ThreadLocal中能够持有不论什么类型的对象,低版本号JDK所提供的get()返回的是Object对象。须要强制类型转换。
但JDK 5.0通过泛型非常好的攻克了这个问题,在一定程度地简化ThreadLocal的使用,代码清单 9 2就使用了JDK 5.0新的ThreadLocal<T>版本号。
概括起来说,对于多线程资源共享的问题,同步机制採用了“以时间换空间”的方式。以前写过这么一篇博文:《synchronized的应用》而ThreadLocal採用了“以空间换时间”的方式。
前者仅提供一份变量,让不同的线程排队訪问,而后者为每个线程都提供了一份变量,因此能够同一时候訪问而互不影响。
关于ThreadLocal这部分是不深刻的理解,有什么不对,请大家指正及时读者。
版权声明:本文博客原创文章。博客,未经同意,不得转载。
DRP-ThreadLocal简单的理解的更多相关文章
- 对ThreadLocal的一些理解
ThreadLocal也是在面试过程中经常被问到的,本文主要从以下三个方面来谈对ThreadLocal的一些理解: ThreadLocal用在什么地方 ThreadLocal一些细节 ThreadLo ...
- ThreadLocal 简单解析
ThreadLocal 简单解析 基于jdk1.8 ThreadLocal一定不陌生,开发中常用,也是面试里的常客了,但是往往我们可能只是知道该类的作用.学习该类对于个人的多线程编码能力是大有裨益的, ...
- 简单的理解deflate算法
简单的理解deflate算法 最近做压缩算法. 用到了deflate压缩算法, 找了很多资料, 这篇文章算是讲的比较易懂的, 这篇文章不长,但却浅显易懂, 基本上涵盖了我想要知道的所有要点. 翻译 ...
- OSI七层模式简单通俗理解
OSI七层模式简单通俗理解 这个模型学了好多次,总是记不住.今天又看了一遍,发现用历史推演的角度去看问题会更有逻辑,更好记.本文不一定严谨,可能有错漏,主要是抛砖引玉,帮助记性不好的人.总体来说,OS ...
- 对js原型简单的理解和图解
对js原型简单的理解和图解 最近在努力的学习js中,今天就抽了个空把自己理解的原型,记下一下在笔记中,以后自己查看,有空在会把原型链记录一下. 1.prototype prototype:是一个函数的 ...
- 最简单的理解 建立TCP连接 三次握手协议
最简单的理解一:建立TCP连接:三次握手协议 客户端:我要对你讲话,你能听到吗:服务端:我能听到:而且我也要对你讲话,你能听到吗:客户端:我也能听到.…….互相开始通话…….. 二:关闭TCP ...
- ThreadLocal简单理解
在java开源项目的代码中看到一个类里ThreadLocal的属性: private static ThreadLocal<Boolean> clientMode = new Thread ...
- Java中ThreadLocal的深入理解
官方对ThreadLocal的描述: "该类提供了线程局部(thread-local)变量.这些变量不同于它们的普通对应物,因为访问某个变量(通过其get或set方法)的每个线程都有自己的局 ...
- 谈谈对ThreadLocal类的理解
源码中对于ThreadLocal类的解释是: /** * This class provides thread-local variables. These variables differ from ...
随机推荐
- 数据结构与算法实验题 7.1 M 商人的求救
问题描述: A 国正面临着一场残酷的战争,城市被支持不同领导的两股势力占据,作为一个商人,M先生并不太关心政治,但是他知道局势很严重,他希望你能救他出去.M 先生说:"为了安全起见,我们的路 ...
- Windows Phone 8.1 Tiles, Notifications and Action Center
(1)Tiles Tiles 也就是磁贴,是 Windows Phone 的一大特色. 一个 Tile 其实可以看成是一个 XML,比如: <tile> <visual> &l ...
- ORA-00907: 缺失右括号问题整理解决
ORA-00907: 缺失右括号 前言 近期在开发过程中使用oracle数据库,在程序中进行查询数据时遇到了"ORA-00907: 缺失右括号"的问题.可是假设直接把sql语句直接 ...
- web网站如何实现兼容手机
web网站如何实现兼容手机 一.总结 一句话总结:加上这句话即可:<meta name="viewport" content="width=device-width ...
- js进阶正则表达式11RegExp的属性和方法(RegExp的属性和方法,就是RegExp对象.(点)什么的形式)(正则表达式执行之前会被编译)
js进阶正则表达式11RegExp的属性和方法(RegExp的属性和方法,就是RegExp对象.(点)什么的形式)(正则表达式执行之前会被编译) 一.总结 1. RegExp的属性和方法,就是RegE ...
- [Most.js] Create Streams From Single Values With Most.js
Most provides many means for creating streams, the simplest of which is the offunction. In this less ...
- 工具类与工具函数 —— NextPrime
求大于某数的下一个素数: static int NextPrime (int N) { if (N % 2 == 0) ++N; int i; for (; ; N += 2){ for (i = 3 ...
- SQL Server2008生成数据库字典
1.我们在开发过程中可能会遇到这样的一种情况"当我们进行维护其他人的项目时或者项目的二次开发时可能会对原始的数据表进行分析",这里为大家介绍一种方便快捷生成数据库字典的方式. 我们 ...
- ACCESS通过一个连接写入的数据,还有一个连接却读取不出来
近期在用c#实现一个数据导入的功能,将一个ACCESS数据库中的数据导入到还有一个ACCESS的数据库中,然后显示出来,可是导入成功了.却显示不出来. 经过研究认为应该是缓存的原因,因为我写入数据和读 ...
- NOIP模拟 table - 矩阵链表
题目大意: 给一个n*m的矩阵,每次交换两个大小相同的不重叠的子矩阵,输出最后的矩阵 题目分析: 这题向我们展示了出神入化的链表是如何炼成的.思想都懂,实现是真的需要技术,%%% 用一副链表来表示该矩 ...