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.
分享到:
相关推荐
ThreadLocal 整理 ThreadLocal 是 Java 中的一个重要组件,它能够在每个线程中保持独立的副本。这个功能是通过 Thread 类中的 threadLocals 属性来实现的,这个属性实际上是一个 Entry 数组,其中的每个 Entry 都...
学习ThreadLocal,了解其中的原理,以及学习其中的优点!避免坑点!!
String value = threadLocal.get(); ``` ##### protected T initialValue() **用途**:返回当前线程的初始值。通常情况下,该方法仅在线程首次访问 ThreadLocal 变量时被调用一次。 **示例代码**: ```java ...
threadlocal源码解析
Java并发编程实践中,ThreadLocal变量是一个非常重要的工具,它在JDK1.2版本就已经引入。ThreadLocal不是代表一个线程实例,而是一种线程局部变量的机制,它为每个线程提供了一个独立的变量副本,各个线程可以独立地...
当线程结束时,ThreadLocal中的数据不会自动清除,因此建议在不再使用时显式调用`threadLocal.remove()`。 - ThreadLocal并不能替代线程同步机制,它仅用于实现线程内的数据隔离,而非线程间的通信或同步。 - 在...
在学习Java过程中,自己收集了很多的Java的学习资料,分享给大家,有需要的欢迎下载,希望对大家有用,一起学习,一起进步。
这个压缩包 "Quartz-ThreadLocal.rar" 内含的学习资源很可能是关于如何在 Quartz 调度器中结合使用 ThreadLocal 的示例。 Quartz 的核心功能包括: 1. **作业与触发器**:在 Quartz 中,任务被称为“作业”(Job)...
### 正确理解ThreadLocal:深入解析其工作原理与应用场景 #### 一、ThreadLocal的基本概念 `ThreadLocal`是Java平台提供的一种线程局部变量的解决方案,它为每一个使用该变量的线程都提供了独立的变量副本,使得每...
threadLocal.set((int) (Math.random() * 100D)); try { Thread.sleep(2000); } catch (InterruptedException e) { } System.out.println(threadLocal.get()); } } public static void main(String[] args...
ThreadLocal 用法详解.md
通过上述分析,我们可以看出`ThreadLocal.rar`中的代码示例可能涉及了如何创建、设置、获取和清理ThreadLocal变量,以及如何在父子线程之间利用ThreadLocal进行通信。学习并理解ThreadLocal的原理和使用方法对于编写...
threadLocal.set(threadLocal.get() + 1); } public static Integer get() { return threadLocal.get(); } // ... } ``` 在这个例子中,`ThreadLocalTest`类中的`threadLocal`变量为每个线程初始化一个...
Python 兵法编程 265_ThreadLocal的使用.mp4
【ThreadLocal】是Java编程语言中用于处理线程局部变量的一个工具类,它提供了一种在多线程环境中实现线程安全的局部变量的方式。在Java的并发编程中,ThreadLocal是一个非常重要的概念,它可以帮助我们创建独立于...
ThreadLocal 是 Java 中用于处理线程局部变量的一个重要工具,它的设计目的是为了解决多线程环境下线程间数据隔离的问题。以下是对标题和描述中所述知识点的详细说明: 1. **与 Synchronized 的区别** - `...
否则,即使`ThreadLocal`实例不再被使用,由于`ThreadLocalMap`还持有对其的引用,`ThreadLocal`实例将无法被垃圾收集,可能导致内存泄漏。 总之,`ThreadLocal`是一个强大的工具,适用于在特定线程内创建独立的...
threadLocal.set("Hello, ThreadLocal"); String value = threadLocal.get(); ``` ### 生命周期管理 ThreadLocal的生命周期是与线程绑定的。当线程结束时,与其关联的ThreadLocal变量不会自动清除,可能会导致内存...
System.out.println(threadLocal.get()); // 输出 "线程A的值" // 在线程B中,由于没有设置过值,get()将返回null System.out.println(threadLocal.get()); // 输出 null ``` ### 2. ThreadLocal生命周期 ...