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 ...
随机推荐
- php实现Bloom Filter
Bloom Filter(BF) 是由Bloom在1970年提出的一种多哈希函数映射的高速查找算法,用于高速查找某个元素是否属于集合, 但不要求百分百的准确率. Bloom filter通经常使用于爬 ...
- ios开发swift学习第三天:逻辑分支
一. 分支的介绍 分支即if/switch/三目运算符等判断语句 通过分支语句可以控制程序的执行流程 二. if分支语句 和OC中if语句有一定的区别 判断句可以不加() 在Swift的判断句中必须有 ...
- winscp ppk无需密码登录(失败)
http://blog.csdn.net/catoop/article/details/8284803 按上文将Linux下生成的密钥文件id_rsa通过puttygen生成对应的.ppk文件,用wi ...
- HTML代码简写法:Emmet和Haml(转)
HTML代码写起来很费事,因为它的标签多. 一种解决方法是采用模板, 在别人写好的骨架内,填入自己的内容.还有一种就是我今天想要介绍的方法----简写法. 常用的简写法,目前主要是Emmet和Haml ...
- QueryRunner类常用的方法
public Object query(Connection conn, String sql, Object[] params, ResultSetHandler rsh) throws SQLEx ...
- bash keys
stty-a CTRL-S and CTRL-Q are called flow-control characters. Bash readline 使用技巧_Linux编程_操作系统_希赛网 htt ...
- [SCSS] Organize SCSS into Multiple Files with Partials
Tired of dealing with monolithic CSS files? Are requests for multiple CSS files hurting your perform ...
- ssh连接上腾讯云、华为云Linux服务器,一会就自动断开
客户端向服务端发送心跳 依赖 ssh 客户端定时发送心跳,putty.SecureCRT.XShell 都有这个功能. Linux / Unix 下,编辑 ssh 配置文件: # vim /etc/s ...
- .netcore consul实现服务注册与发现-单节点部署
原文:.netcore consul实现服务注册与发现-单节点部署 一.Consul的基础介绍 Consul是HashiCorp公司推出的开源工具,用于实现分布式系统的服务发现与配置.与其他分 ...
- 课堂随笔02--c#中string作为引用类型的特殊性
using System; namespace Test { class Test1 { static void Main(string[] args) { string str1 = "1 ...