关于在struts2 action中使用ThreadLocal

发布于 2021-11-19 12:44:10 字数 269 浏览 737 评论 11

每次action调用时,都用 
log.debug("current thread.id={}",Thread.currentThread().getId());输出当前线程的id。 

在多次action调用中,有可能会得到同一个线程id,这样话如果使用ThreadLocal就会得到上一次调用时的那个ThreadLocal变量,我怎么做才能保证每次线程id不同呢。

为什么每次都会得到同一个线程id呢,跟threadpool有关吗?求解释

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(11

疾风者 2021-11-23 05:46:03

我说的事后清理 是在 try-catch的finally块里面进行的,所以没有出现异常就不清理的问题

少女净妖师 2021-11-23 05:44:23

我这里理论上出异常的地方太多了,每个catch都写不合适

恋你朝朝暮暮 2021-11-23 05:40:52

我是在Filter里面加的清理 所以不管里面怎么异常 过滤器总是在外围

心欲静而疯不止 2021-11-23 05:35:00

两个月以后,我发现使用前和使用后都要清理才行,使用后清理是为了尽早让gc回收不用的资源,不然正如
@逝水fox 所说会造成泄漏;使用前清理是因为,有可能上次出现异常而没有运行到清理localThread的程序,导致在使用线程池的清况下,再次访问到未清理的localThread。

苍暮颜 2021-11-23 05:20:51

我更赞成
@逝水fox 的说法

冷默言语 2021-11-23 05:17:17

使用前初始化下

残花月 2021-11-23 05:07:35

就算没有线程池,清理也是必须的。线程消亡的时候,
ThreadLocal不会自动删除对应的资源的,否则会造成泄漏。

输什么也不输骨气 2021-11-23 05:05:42

清理清理

平生欢 2021-11-23 04:48:14

看来用完ThreadLocal后得清理清理了

浮生未歇 2021-11-23 02:48:52

感谢,果然和线程池有关

一笔一画续写前缘 2021-11-21 08:52:46

看 threadLoacal源码分析 这有两篇文章给你参考

理解ThreadLoacal

threadLocal认识的几个误区

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文