day07_java基础

简介: 自己所掌握的基础知识加以巩固和记录!希望大家点赞收藏并能给予鼓励和支持!有任何建议或者帮助也可以来哦!

Threadloal 的原理:

ThreadLocal:为共享变量在每个线程中创建一个副本,每个线程都可以访问自己

内部的副本变量。通过 threadlocal 保证线程的安全性。

其实在 ThreadLocal 类中有一个静态内部类 ThreadLocalMap(其类似于 Map),

用键值对的形式存储每一个线程的变量副本,ThreadLocalMap 中元素的 key 为当前

ThreadLocal 对象,而 value 对应线程的变量副本。

ThreadLocal 本身并不存储值,它只是作为一个 key 保存到 ThreadLocalMap

中,但是这里要注意的是它作为一个 key 用的是弱引用,因为没有强引用链,弱引用在 GC

的时候可能会被回收。这样就会在 ThreadLocalMap 中存在一些 key 为 null 的键值对

(Entry)。因为 key 变成 null 了,我们是没法访问这些 Entry 的,但是这些 Entry 本身是

不会被清除的。如果没有手动删除对应 key 就会导致这块内存即不会回收也无法访问,也

就是内存泄漏。

使用完 ThreadLocal 之后,记得调用 remove 方法。 在不使用线程池的前提下,

即使不调用 remove 方法,线程的"变量副本"也会被 gc 回收,即不会造成内存泄漏的情况。






相关文章
|
8月前
|
Java 编译器
java基础
【4月更文挑战第5天】java基础
54 2
|
8月前
|
Java
JAVA基础小记
JAVA基础小记
28 0
|
NoSQL Java 数据库连接
day40_java_基础巩固
自己所掌握的基础知识加以巩固和记录!希望大家点赞收藏并能给予鼓励和支持!有任何建议或者帮助也可以来哦!!!虽然有些干货知识很通俗,但也是自己的必经之路i,加油!!!
day10_java基础
自己所掌握的基础知识加以巩固和记录!希望大家点赞收藏并能给予鼓励和支持!有任何建议或者帮助也可以来哦!
|
存储 安全 Java
java基础相关知识
java语言是面向对象语言,他和面向过程C不同点是,有封装、继承、多态,万物皆是对象,但是执行效率面向过程稍微快些。
62 0
|
负载均衡 Dubbo Java
day46_java_基础巩固
自己所掌握的基础知识加以巩固和记录!希望大家点赞收藏并能给予鼓励和支持!有任何建议或者帮助也可以来哦!!!虽然有些干货知识很通俗,但也是自己的必经之路i,加油!!!
|
前端开发 Java 数据安全/隐私保护
day41_java_基础巩固
自己所掌握的基础知识加以巩固和记录!希望大家点赞收藏并能给予鼓励和支持!有任何建议或者帮助也可以来哦!!!虽然有些干货知识很通俗,但也是自己的必经之路i,加油!!!
|
存储 NoSQL 算法
day53_java_基础巩固
自己所掌握的基础知识加以巩固和记录!希望大家点赞收藏并能给予鼓励和支持!有任何建议或者帮助也可以来哦!!!虽然有些干货知识很通俗,但也是自己的必经之路i,加油!!!
|
Dubbo 应用服务中间件 调度
day43_java_基础巩固
自己所掌握的基础知识加以巩固和记录!希望大家点赞收藏并能给予鼓励和支持!有任何建议或者帮助也可以来哦!!!虽然有些干货知识很通俗,但也是自己的必经之路i,加油!!!
|
消息中间件 存储 负载均衡
day56_java_基础巩固
自己所掌握的基础知识加以巩固和记录!希望大家点赞收藏并能给予鼓励和支持!有任何建议或者帮助也可以来哦!!!虽然有些干货知识很通俗,但也是自己的必经之路i,加油!!!