ThreadLocal 简单了解

​ 今天接了一个面试,问了我是否有写博客,我只能默默的回答了写评论算吗,面试官建议我写博客,毕竟可以写在简历上,这样面试官就可以先了解面试者的能力了。于是乎,我写了这个博客,可能比较差,请各位勿喷。

出现

JDK1.2 由Josh Bloch and Doug Lea大神共同编写

解决了什么问题

它可以为多线程中访问资源/对象时解决其共享的问题

实现

看一个类就先应看它的构造

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-p1I9Nl5r-1605276241337)(C:\Users\1\AppData\Roaming\Typora\typora-user-images\1605275434091.png)]

可以看到有一个 ThreadLocalMap 的内部类,[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6NoXSXQp-1605276241338)(C:\Users\1\AppData\Roaming\Typora\typora-user-images\1605275561438.png)]

这个内部类里还有一个Entry类,它继承了弱引用,

在垃圾回收器线程扫描到弱引用的对象,都会回收它的内存。不过由于垃圾回收器线程是优先级很低的线程,因此不一定会很快发现那些只具有弱引用的对象. 弱引用的生命周期是由垃圾回收器决定的,一旦发现垃圾回收线程发现了弱引用对象,下一次GC操作就会对其进行回收

正是这个Entry来实现解决其共享的功能。

ThreadLocal 简单了解相关推荐

  1. java之ThreadLocal简单使用总结

    1.介绍ThreadLocal 看安卓源码的时候,在这个类Looper.java ,会有这个一句函数 static final ThreadLocal<Looper> sThreadLoc ...

  2. Java中的ThreadLocal详解

    一.ThreadLocal简介 多线程访问同一个共享变量的时候容易出现并发问题,特别是多个线程对一个变量进行写入的时候,为了保证线程安全,一般使用者在访问共享变量的时候需要进行额外的同步措施才能保证线 ...

  3. 线程知识-ThreadLocal使用详解

    最近在看Spring的时候回顾了一下ThreadLocal,下面是ThreadLocal的使用说明. 概述 首先,谈到ThreadLocal的使用,我们先来了解一下ThreadLocal是什么?Thr ...

  4. 线程的局部变量ThreadLocal概念

    ThreadLocal是什么 对这个词语分解,将其分为Thread和Local,顾名思义便是本线程的变量,既然是当前线程的变量,那么就意味着这个变量对于其他线程来说就是隔离的,也就是不可见的,Thre ...

  5. 深入浅出多线程编程实战(五)ThreadLocal详解(介绍、使用、原理、应用场景)

    深入浅出多线程编程实战(五)ThreadLocal详解(介绍.使用.原理.应用场景) 文章目录 一.ThreadLocal简介 二.ThreadLocal与Synchronized区别 三.Threa ...

  6. Java:关于 ThreadLocal 的知识来了!

    面试题: 1.ThreadLocal 与 ThreadLocalMap 的数据结构和关系? 2.ThreadLocal 的 key 是弱引用,这是为什么? 3.ThreadLocal 内存泄漏问题你知 ...

  7. 并发中的Synchronized、Lock、Volite、Map、ThreadLocal

    文章目录 Synchronized synchronized 的三种应用方式 synchronized 括号后面的对象 synchronized 的锁的原理 Java 对象头 synchronized ...

  8. Java 多线程 | 并发知识问答总结

    模拟死锁状态代码: public class DeadLockDemo { /** * 资源 1 / private static Object resource1 = new Object(); / ...

  9. Java 多线程 | 并发知识面试问答总结

    写在最前面 这个项目是从20年末就立好的 flag,经过几年的学习,回过头再去看很多知识点又有新的理解.所以趁着找实习的准备,结合以前的学习储备,创建一个主要针对应届生和初学者的 Java 开源知识项 ...

最新文章

  1. mysql反弹提权_MySQL数据库反弹端口连接提权
  2. sequence.pad_sequences 的用法举例
  3. pip install models ModuleNotFoundError: No module named ‘base‘
  4. 如何批量转移大量的邮件?
  5. 《微型计算机2014年》更新至12月下
  6. 简约之美Jodd-http--深入源码理解http协议
  7. 完整的url以及同源跨域处理
  8. 10以内数的组成分解图_大班数学教案《10以内数的组成》
  9. AT3949-[AGC022D]Shopping【贪心】
  10. java me基础教程 pdf_Java ME手机应用开发技术与案例详解 PDF
  11. Java 多线程 —— wait 与 notify
  12. openlayers3 根据经纬度 自动画框_Power Query获取上海市各区的经纬度
  13. c语言程序如何生成软件,用c语言编写的程序怎么样生成可执行软件。
  14. 幂运算的O(lgn)算法
  15. Laravel文档梳理2、路由相关
  16. 档案查询系统php,档案信息管理系统 v2.0
  17. 实验9 面向对象程序设计方法
  18. C基础:45道练习题汇总(初学者加油)
  19. js实现农历时间代码
  20. php webshell探索-常见小马

热门文章

  1. #汇编语言字符串的输出(dosbox运行时输出乱码问题解决)
  2. Qt编写物联网管理平台22-报警联动
  3. mysql数据库的原则_mysql数据库的表设计原则
  4. 怎么使用mp3转换器将mp4转换mp3格式
  5. 微信流量主点击量与曝光量是什么意思
  6. Msbuild的工具集版本
  7. 青岛华领区块链研究院有限公司
  8. S32K344休眠与唤醒配置的一种方法
  9. 蓝桥算法提高ADV-381 分割项链题解
  10. 用python的gui界面设计签名_Python GUI Tkinter简单实现个性签名设计