Threadlocal说明

Threadlocal示意图

示意图

每个Thread中有个变量threadlocal是一个ThreadlocalMap类型

ThreadlocalMap 中的key是threadlocal引用,value就是我们存的值。

Threadlocal中的方法

protected Object initialValue() 

void set(Object value) 

public Object get()

public void remove()

protected Object initialValue() 

存在内存泄露的原因

当threadlocal没回收以后原来的key就指向null,value还在但是没有实际的作用(内存泄漏)。所以需要调用set,get,remove将key为null的删除。

Threadlocal实际场景

Spring的事务就借助了ThreadLocal类。Spring会从数据库连接池中获得一个connection,然会把connection放进ThreadLocal中,也就和线程绑定了,事务需要提交或者回滚,只要从ThreadLocal中拿到connection进行操作。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。