简单就是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简单的理解的更多相关文章

  1. 对ThreadLocal的一些理解

    ThreadLocal也是在面试过程中经常被问到的,本文主要从以下三个方面来谈对ThreadLocal的一些理解: ThreadLocal用在什么地方 ThreadLocal一些细节 ThreadLo ...

  2. ThreadLocal 简单解析

    ThreadLocal 简单解析 基于jdk1.8 ThreadLocal一定不陌生,开发中常用,也是面试里的常客了,但是往往我们可能只是知道该类的作用.学习该类对于个人的多线程编码能力是大有裨益的, ...

  3. 简单的理解deflate算法

    简单的理解deflate算法 最近做压缩算法. 用到了deflate压缩算法,  找了很多资料,  这篇文章算是讲的比较易懂的, 这篇文章不长,但却浅显易懂, 基本上涵盖了我想要知道的所有要点. 翻译 ...

  4. OSI七层模式简单通俗理解

    OSI七层模式简单通俗理解 这个模型学了好多次,总是记不住.今天又看了一遍,发现用历史推演的角度去看问题会更有逻辑,更好记.本文不一定严谨,可能有错漏,主要是抛砖引玉,帮助记性不好的人.总体来说,OS ...

  5. 对js原型简单的理解和图解

    对js原型简单的理解和图解 最近在努力的学习js中,今天就抽了个空把自己理解的原型,记下一下在笔记中,以后自己查看,有空在会把原型链记录一下. 1.prototype prototype:是一个函数的 ...

  6. 最简单的理解 建立TCP连接 三次握手协议

     最简单的理解一:建立TCP连接:三次握手协议    客户端:我要对你讲话,你能听到吗:服务端:我能听到:而且我也要对你讲话,你能听到吗:客户端:我也能听到.…….互相开始通话…….. 二:关闭TCP ...

  7. ThreadLocal简单理解

    在java开源项目的代码中看到一个类里ThreadLocal的属性: private static ThreadLocal<Boolean> clientMode = new Thread ...

  8. Java中ThreadLocal的深入理解

    官方对ThreadLocal的描述: "该类提供了线程局部(thread-local)变量.这些变量不同于它们的普通对应物,因为访问某个变量(通过其get或set方法)的每个线程都有自己的局 ...

  9. 谈谈对ThreadLocal类的理解

    源码中对于ThreadLocal类的解释是: /** * This class provides thread-local variables. These variables differ from ...

随机推荐

  1. php实现Bloom Filter

    Bloom Filter(BF) 是由Bloom在1970年提出的一种多哈希函数映射的高速查找算法,用于高速查找某个元素是否属于集合, 但不要求百分百的准确率. Bloom filter通经常使用于爬 ...

  2. ios开发swift学习第三天:逻辑分支

    一. 分支的介绍 分支即if/switch/三目运算符等判断语句 通过分支语句可以控制程序的执行流程 二. if分支语句 和OC中if语句有一定的区别 判断句可以不加() 在Swift的判断句中必须有 ...

  3. winscp ppk无需密码登录(失败)

    http://blog.csdn.net/catoop/article/details/8284803 按上文将Linux下生成的密钥文件id_rsa通过puttygen生成对应的.ppk文件,用wi ...

  4. HTML代码简写法:Emmet和Haml(转)

    HTML代码写起来很费事,因为它的标签多. 一种解决方法是采用模板, 在别人写好的骨架内,填入自己的内容.还有一种就是我今天想要介绍的方法----简写法. 常用的简写法,目前主要是Emmet和Haml ...

  5. QueryRunner类常用的方法

    public Object query(Connection conn, String sql, Object[] params, ResultSetHandler rsh) throws SQLEx ...

  6. bash keys

    stty-a CTRL-S and CTRL-Q are called flow-control characters. Bash readline 使用技巧_Linux编程_操作系统_希赛网 htt ...

  7. [SCSS] Organize SCSS into Multiple Files with Partials

    Tired of dealing with monolithic CSS files? Are requests for multiple CSS files hurting your perform ...

  8. ssh连接上腾讯云、华为云Linux服务器,一会就自动断开

    客户端向服务端发送心跳 依赖 ssh 客户端定时发送心跳,putty.SecureCRT.XShell 都有这个功能. Linux / Unix 下,编辑 ssh 配置文件: # vim /etc/s ...

  9. .netcore consul实现服务注册与发现-单节点部署

    原文:.netcore consul实现服务注册与发现-单节点部署 一.Consul的基础介绍     Consul是HashiCorp公司推出的开源工具,用于实现分布式系统的服务发现与配置.与其他分 ...

  10. 课堂随笔02--c#中string作为引用类型的特殊性

    using System; namespace Test { class Test1 { static void Main(string[] args) { string str1 = "1 ...