网关和ThreadLocal为什么不能一起用
时间: 2023-11-15 14:02:59 浏览: 38
网关和ThreadLocal不能一起使用的原因是,网关是一个独立的服务,它会为每个请求创建一个新的线程来处理请求。而ThreadLocal是基于线程的,它会为每个线程创建一个独立的变量副本,这个变量只能在当前线程中访问。因此,如果在网关中使用ThreadLocal,会导致每个请求都会创建一个新的ThreadLocal变量副本,这样会占用大量的内存资源,而且会导致线程安全问题。因此,在网关中使用ThreadLocal是不可取的。
相关问题
threadlocal 为什么使用弱引用而不是强引用
ThreadLocal 使用弱引用是为了避免内存泄漏。如果使用强引用,当 ThreadLocal 变量被使用完后,如果没有手动删除对应的 Entry 对象,那么这个 Entry 对象将一直存在于 ThreadLocalMap 中,而这个 Entry 对象持有的 ThreadLocal 对象也将一直存在,这就会导致内存泄漏。使用弱引用可以让 Entry 对象在没有强引用指向时被垃圾回收,从而避免内存泄漏。
ThreadLocal为什么不在一个线程
ThreadLocal不能在一个线程中共享,是因为每个线程都有自己独立的ThreadLocalMap,用于存储该线程的本地变量。当一个线程设置了ThreadLocal变量的值后,其他线程无法直接获取到该值,因为它们对应的ThreadLocalMap是不同的。这样就实现了线程之间的数据隔离,避免了多线程环境下的变量访问冲突。
相关推荐
![doc](https://img-home.csdnimg.cn/images/20210720083327.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)