gpt4 book ai didi

java - 在应用程序关闭时删除 tomcat 线程上的 threadLocal 对象

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:05:31 29 4
gpt4 key购买 nike

我正在处理 Web 服务并创建线程本地实例,并且只想在应用程序关闭期间删除它们(一旦为线程创建了线程本地对象,我想在该线程上的不同服务调用期间使用该对象)。由于线程是由 tomcat 创建和拥有的,有没有办法在应用程序关闭期间删除这些线程局部变量?

最佳答案

Tomcat 6 具有内存泄漏检测功能,而 Tomcat 7 具有实际的删除逻辑 - 它会自动为您删除所有线程本地对象:http://wiki.apache.org/tomcat/MemoryLeakProtection

理想情况下,您应该在请求完成后从线程本地删除所有对象,因为同一个线程将被放回线程池并用于服务其他请求 - 在这种情况下,线程本地值可能会干扰后续请求逻辑,并导致各种安全问题。

但如果您特别希望在 Tomcat webapp 的整个生命周期内将值保存在本地线程中 - Tomcat 7 将在 webapp 关闭时为您清理它,将其视为垃圾收集。

关于java - 在应用程序关闭时删除 tomcat 线程上的 threadLocal 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22244345/

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