Any variable stored in ThreadLocal are per thread as we knew, but most people does know that even the thread has been expeired or dead, it's copy of the variable in ThreadLocal won't disappear.
I read the STRUTS 2 code recently, figured out that you should always manually cleanup the variables in ThreadLocal when your thread is about to close.
In below code, ThreadLocal variables in dispatcher and ActionContext will be cleaned up:
public void destroy() {
if (dispatcher == null) {
log.warn("something is seriously wrong, Dispatcher is not initialized (null) ");
} else {
try {
dispatcher.cleanup();
} finally {
ActionContext.setContext(null);
}
}
}
Just write this done in case forgot in future.
分享到:
相关推荐
入研究java.lang.ThreadLocal类.docx
Java并发编实践之ThreadLocal变量.doc
学习ThreadLocal,了解其中的原理,以及学习其中的优点!避免坑点!!
java核心知识点学习----多线程间的数据共享和对象独立,ThreadLocal详解.pdf
解析源码内容,包括threadlocalmap中怎么解决hash冲突,以及set时得各种场景,还有set时什么条件会触发扩容机制,并且说明在过期桶中为什么要清除这些数据信息。
threadlocal源码解析
在学习Java过程中,自己收集了很多的Java的学习资料,分享给大家,有需要的欢迎下载,希望对大家有用,一起学习,一起进步。
正确理解ThreadLocal.pdf
ThreadLocal 用法详解.md
ThreadLocal
我们可以看到,通过这段代码实例化了一个ThreadLocal对象。我们只需要实例化对象一次,并且也不需要知道它是被哪个线程实例化。虽然所有的线程都能访问到这个ThreadLocal实例,但是每个线程却只能访问到自己通过调用...
Python 兵法编程 265_ThreadLocal的使用.mp4
本地学习练习demo的eclipse工作空间:主要包括多线程的相关demo以及quartz调度的简单实现和其他java基础的demo练习
Python之ThreadLocal共4页.pdf.zip
JAVA并发-自问自答学ThreadLocal
通常情况下,我们创建的成员变量都是线程不安全的。因为他可能被多个线程同时修改,此变量对于多...而使用ThreadLocal创建的变量只能被当前线程访问,其他线程无法访问和修改。也就是说:将线程公有化变成线程私有化。
多线程可以同时运行多个任务但是当多个线程同时访问共享数据时,可能导致数据不同步,甚至错误!线程锁主要用来给方法、代码块加锁
《ThreadLocal究竟是个啥?》案例代码,讲述了ThreadLocal的概念使用,解答了ThreadLocal在父子线程中通信问题。
ThreadLocal的简单理解.doc
synchronized关键字不属于方法特征签名的一部分,所以可以在覆盖方法的时候加上去。也就是说,在父类的方法声明上可以没有synchronized关键字,而在子类覆盖该方法时加上synchronized关键字。 注意:使用...