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 回收,即不会造成内存泄漏的情况。






相关文章
|
2月前
|
网络协议 Java 网络性能优化
Java基础杂文
这段内容介绍了HTTPS无法解决的问题,包括网络延迟、数据包大小、并发请求限制和性能影响。接着解释了双亲委派模型,这是一种类加载机制,通过将加载请求逐级向上委托给父类加载器来完成。最后,详细对比了TCP和UDP两种传输层协议的区别,以及`select`的原理及其缺点,如频繁的用户态与内核态间的数据拷贝和遍历操作带来的性能损耗。
Java基础杂文
|
NoSQL Java 数据库连接
day40_java_基础巩固
自己所掌握的基础知识加以巩固和记录!希望大家点赞收藏并能给予鼓励和支持!有任何建议或者帮助也可以来哦!!!虽然有些干货知识很通俗,但也是自己的必经之路i,加油!!!
|
存储 消息中间件 NoSQL
day48_java_基础巩固
自己所掌握的基础知识加以巩固和记录!希望大家点赞收藏并能给予鼓励和支持!有任何建议或者帮助也可以来哦!!!虽然有些干货知识很通俗,但也是自己的必经之路i,加油!!!
|
监控 NoSQL Redis
day52_java_基础巩固
自己所掌握的基础知识加以巩固和记录!希望大家点赞收藏并能给予鼓励和支持!有任何建议或者帮助也可以来哦!!!虽然有些干货知识很通俗,但也是自己的必经之路i,加油!!!
|
存储 安全 Java
java基础相关知识
java语言是面向对象语言,他和面向过程C不同点是,有封装、继承、多态,万物皆是对象,但是执行效率面向过程稍微快些。
56 0
|
Dubbo 应用服务中间件 调度
day43_java_基础巩固
自己所掌握的基础知识加以巩固和记录!希望大家点赞收藏并能给予鼓励和支持!有任何建议或者帮助也可以来哦!!!虽然有些干货知识很通俗,但也是自己的必经之路i,加油!!!
|
负载均衡 算法 Java
day44_java_基础巩固
自己所掌握的基础知识加以巩固和记录!希望大家点赞收藏并能给予鼓励和支持!有任何建议或者帮助也可以来哦!!!虽然有些干货知识很通俗,但也是自己的必经之路i,加油!!!
|
安全
day06_java基础
自己所掌握的基础知识加以巩固和记录!希望大家点赞收藏并能给予鼓励和支持!有任何建议或者帮助也可以来哦!
|
Java
# Day02-Java基础
# Day02-Java基础
120 0
# Day02-Java基础