gpt4 book ai didi

java - Spring Boot 中的线程本地行为

转载 作者:行者123 更新时间:2023-12-02 00:43:27 25 4
gpt4 key购买 nike

众所周知,Tomcat 有大约 200 个线程,而 Jetty 在各自的线程池中有一些默认计数的线程。因此,如果我们在每个请求的 ThreadLocal 中设置一些内容,它会在线程中终生存在,还是 Tomcat 在每次请求后都会清除 ThreadLocal 。

如果我们在过滤器中的 userContext 中设置某些内容,是否需要在每次过滤器退出时清除它?

或者如果我们没有线程池配置,Web 服务器每次都会创建一个新线程吗?

public static final ThreadLocal<UserContextDto> userContext = new ThreadLocal<>();

最佳答案

是的,您需要清除ThreadLocal。 Tomcat 不会清除 ThreadLocals。

不,并不是每次都会创建新线程。池中的线程用于服务请求,并在请求完成后返回池。

这不仅适用于 Tomcat,也适用于 Jetty 和 Undertow。为每个请求创建线程在资源和时间方面都是昂贵的。

关于java - Spring Boot 中的线程本地行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57917370/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com