开局就说山东省大学,这就有点意思了

ThreadLocal 实现一个人(线程)一个球(资源)

image.png
原理就是一个map

ThreadLocal 与内存泄露

卧槽 内存泄露这个词经常遇到,到底啥是内存泄漏?

内存泄露和内存溢出啥区别(惭愧啊 干了十来年程序员(别问为啥十来年,劳资努力 劳资加班,劳资是天才,就是牛逼) 竟然不知道这俩个玩意的区别)
我的理解:
内存泄露:占着茅坑不拉屎
内存溢出:大象用你家马桶拉shit。
以下是知乎网友的答案
image.png
老师实现的ThreadLocal是大家本能想出来的,但是会出问题,就是线程即使用完了 但是ThreadLocal还存在,导致Thread无法被回收,这不就是占着茅坑不拉屎么。你看看高斯林是咋做的,大致看上去就是map是属于ThreadLocal的,只要Thread回收了 map就会被回收,但是没看懂这是咋玩的,底层还是数组,

线程池中ThreadLocal注意内存泄露

就是因为线程池中线程存活时间太久了 导致Thread对象一直不回收,map当然也不回收了。如何处理?手动回收,看来GC 还是不行

因为
应用场景

  1. 多线程求和,每个线程去求和,把求和结果写到threadlocal 最后对threadlocal求和。
  2. spring事务

课后思考

异步编程已经很成熟了,那你觉得在异步场景中,是否可以使用 Spring 的事务管理器呢?
image.png好屌好屌 没看懂