博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Clean ThreadLocals
阅读量:5283 次
发布时间:2019-06-14

本文共 1879 字,大约阅读时间需要 6 分钟。

A method to clean ThreadLocal

private void cleanThreadLocals() {        try {            // Get a reference to the thread locals table of the current thread            Thread thread = Thread.currentThread();            Field threadLocalsField = Thread.class.getDeclaredField("threadLocals");            threadLocalsField.setAccessible(true);            Object threadLocalTable = threadLocalsField.get(thread);            // Get a reference to the array holding the thread local variables inside the            // ThreadLocalMap of the current thread            Class threadLocalMapClass = Class.forName("java.lang.ThreadLocal$ThreadLocalMap");            Field tableField = threadLocalMapClass.getDeclaredField("table");            tableField.setAccessible(true);            Object table = tableField.get(threadLocalTable);            // The key to the ThreadLocalMap is a WeakReference object. The referent field of this object            // is a reference to the actual ThreadLocal variable            Field referentField = Reference.class.getDeclaredField("referent");            referentField.setAccessible(true);            for (int i=0; i < Array.getLength(table); i++) {                // Each entry in the table array of ThreadLocalMap is an Entry object                // representing the thread local reference and its value                Object entry = Array.get(table, i);                if (entry != null) {                    // Get a reference to the thread local object and remove it from the table                    ThreadLocal threadLocal = (ThreadLocal)referentField.get(entry);                    threadLocal.remove();                }            }        } catch(Exception e) {            // We will tolerate an exception here and just log it            throw new IllegalStateException(e);        }    }

 

转载于:https://www.cnblogs.com/frankyou/p/10788885.html

你可能感兴趣的文章
(五十四)涂鸦的实现和截图的保存
查看>>
配置EditPlus使其可以编译运行java程序
查看>>
java中的占位符\t\n\r\f
查看>>
MySQL通过frm 和 ibd 恢复数据过程
查看>>
SRS源码——Listener
查看>>
Java面向对象抽象类案例分析
查看>>
对SPI、IIC、IIS、UART、CAN、SDIO、GPIO的解释
查看>>
Thymeleaf模板格式化LocalDatetime时间格式
查看>>
庖丁解“学生信息管理系统”
查看>>
Pyltp使用
查看>>
其他ip无法访问Yii的gii,配置ip就可以
查看>>
php做的一个简易爬虫
查看>>
x的x次幂的值为10,求x的近似值
查看>>
jquery获取html元素的绝对位置和相对位置的方法
查看>>
ios中webservice报文的拼接
查看>>
Power BI 报告的评论服务支持移动设备
查看>>
ACdream 1068
查看>>
HDU 2665 Kth number
查看>>
记叙在人生路上对你影响最大的三位老师
查看>>
002.大数据第二天
查看>>