首页  

ThreadLocal原理及最佳实践     所属分类 java 浏览量 1159
ThreadLocal 使用场景

Web用户身份  Session
请求的链路跟踪 traceId
SimpleDateFormat 非线程安全

Thread ThreadLocalMap ThreadLocal

WeakReferences key
Hash冲突解决方法 开放定址法

ThreadLocal内存泄漏的根源
ThreadLocalMap的生命周期跟Thread一样长,如果没有手动删除对应key会导致内存泄漏
线程池中的线程 

key 强引用 VS  弱引用

key 使用强引用
引用的ThreadLocal的对象被回收了,如果没有手动删除,ThreadLocal不会被回收,导致内存泄漏。

key 使用弱引用
引用的ThreadLocal的对象被回收了,即使没有手动删除,value在下一次ThreadLocalMap调用set,get,remove时被清除

最佳实践
使用完ThreadLocal后remove,避免内存泄露
实现  initialValue  方法 ,设置初始值



threadlocal实例及原理 ThreadLocal 与 SimpleDateFormat

上一篇     下一篇
kafka面试题

tcpdump使用简介

kafka各版本特性

分布式一致性算法 Paxos Raft ZAB

springcloud sleuth zipkin 实例

Spring Cloud Sleuth Zipkin原理