报告网站开发环境,请问番禺哪里有做网站的,南通网站建设系统方案,宠物主题网站模板ThreadLocal概述
ThreadLocal是多线程中对于解决线程安全的一个操作类#xff0c;它会为每个线程都分配一个独立的线程副本从而解决了变量并发访问冲突的问题。ThreadLocal 同时实现了线程内的资源共享案例#xff1a;使用JDBC操作数据库时#xff0c;会将每一个线程的Conn…ThreadLocal概述
ThreadLocal是多线程中对于解决线程安全的一个操作类它会为每个线程都分配一个独立的线程副本从而解决了变量并发访问冲突的问题。ThreadLocal 同时实现了线程内的资源共享案例使用JDBC操作数据库时会将每一个线程的Connection放入各自的ThreadLocal中从而保证每个线程都在各自的 Connection 上进行数据库的操作避免A线程关闭了B线程的连接。
ThreadLocal-内存泄露问题
每一个Thread维护一个ThreadLocalMap在ThreadLocalMap中的Entry对象继承了WeakReference。(弱引用内存不太够的时候优先回收)其中key为使用弱引用的ThreadLocal实例value为线程变量的副本 1. ThreadLocal 可以实现【资源对象】的线程隔离让每个线程各用各的【资源对象】避免争用引发的线程安全问题 2. ThreadLocal 同时实现了线程内的资源共享 3. 每个线程内有一个 ThreadLocalMap 类型的成员变量用来存储资源对象 a)调用 set 方法就是以 ThreadLocal 自己作为 key资源对象作为 value放入当前线 程的 ThreadLocalMap 集合中 b)调用 get 方法就是以 ThreadLocal 自己作为 key到当前线程中查找关联的资源值 c)调用 remove 方法就是以 ThreadLocal 自己作为 key移除当前线程关联的资源值 4. ThreadLocal内存泄漏问题ThreadLocalMap 中的 key 是弱引用值为强引用 key 会被GC 释放内存关联 value 的内存并不会释放。建议主动 remove 释放 keyvalue