关于ThreadLocal疑问
寒心恨雪~ 2018-12-08 11:39:29 关于ThreadLocal的疑问?
1.在项目中使用ThreadLocal时,都是作为静态变量使用的,因为ThreadLocal对象会作为key放在线程的map中,如果ThreadLocal作为非静态变量使用,那么在线程中获取value时,由于ThreadLocal对象(key)不同,就会获取不到set到线程中的参数,所以大家有把ThreadLocal作为非静态变量使用过吗?怎么使用的?
2.如果ThreadLocal作为静态变量使用,ThreadLocal这个对象就不存在内存泄漏了,这个对象会一直存在,放在线程map中的value也不会在set、get、remove方法时候进行value set null了,所以当线程销毁的时候value对象也是会被断开引用,会被GC回收掉的,如果使用线程池,只需要在线程使用完的时候,调用ThreadLocal对象的remove方法就ok了。
各位同学,你们还有其他方式使用ThreadLocal吗?,是怎么使用的?以及怎么避免内存泄漏的?