关于 ThreadLocal 的疑问
我想知道当线程结束后,相应的 ThreadLocal 对象是否会被释放?我写了一个测试:
import java.util.Date;
/**
* 测试大量 ThreadLocal 是否被释放
*
* @author yidinghe
*/
public class TestLargeAmountThreadLocals extends Thread {
private static ThreadLocal cache = new ThreadLocal();
public void run() {
cache.set(new Date());
}
public static void main(String[] args) throws Exception {
long mem0 = Runtime.getRuntime().totalMemory() - Runtime.getRuntime().freeMemory();
for (int i = 0; i < 1000; i++) {
new TestLargeAmountThreadLocals().start();
}
Thread.sleep(5000);
long mem1 = Runtime.getRuntime().totalMemory() - Runtime.getRuntime().freeMemory();
System.out.println("usage: " + (mem1 - mem0));
}
}
测试结果却是:
usage: -17736
我不知道这是怎么回事。
import java.util.Date;
/**
* 测试大量 ThreadLocal 是否被释放
*
* @author yidinghe
*/
public class TestLargeAmountThreadLocals extends Thread {
private static ThreadLocal cache = new ThreadLocal();
public void run() {
cache.set(new Date());
}
public static void main(String[] args) throws Exception {
long mem0 = Runtime.getRuntime().totalMemory() - Runtime.getRuntime().freeMemory();
for (int i = 0; i < 1000; i++) {
new TestLargeAmountThreadLocals().start();
}
Thread.sleep(5000);
long mem1 = Runtime.getRuntime().totalMemory() - Runtime.getRuntime().freeMemory();
System.out.println("usage: " + (mem1 - mem0));
}
}
测试结果却是:
usage: -17736
我不知道这是怎么回事。
...全文
相关推荐
ThreadLocal应用示例及理解
ThreadLocal应用示例及理解,这个写了相关的示例,可以参考一下。
ThreadLocal
应用ThreadLocal进行多线程处理,经典小例子。可运行。
ThreadLocal跨线程问题
1、问题 通常复杂的处理流程中,我们会使用一些异步处理的手段,那么这种场景下ThreadLocal即可能出现获取失败的问题。 public class ThreadLocalTest { public static void main(String[] args) { ThreadLocal threadLocal = new ThreadLocal(); threadLocal.set("A"); System.out.println(Thread.currentThread().getName()+"-getThreadLocal:"
java 中ThreadLocal 的正确用法
主要介绍了java 中ThreadLocal 的正确用法的相关资料,需要的朋友可以参考下
java ThreadLocal使用案例详解
主要为大家详细介绍了java ThreadLocal的使用案例,具有一定的参考价值,感兴趣的小伙伴们可以参考一下


Java SE
