自从我用Java编程以来已经有一段时间了,我想要梳理一些理论。
如何从头开始实现自己的ThreadLocal?
答案 0 :(得分:2)
是。您可以在线程的子类中复制线程并复制实现。或者您可以只读取代码,但获得正确的ThreadLocal是非常棘手的。
有许多棘手的元素,最明显的是防止线程中的内存泄漏未被删除。
即使是现有的实现也会遇到以下问题:子类ThreadLocal对象可能会阻止ClassLoaders卸载。
答案 1 :(得分:2)
试试这个:
new Thread()
{
//contents
}.start();
您可以在代码中的任何位置生成此内容。
答案 2 :(得分:0)
事实证明这个问题是重复的:
这很简单,实际上,它只是存储在每个Thread对象中的名称 - 值对的Map(请参阅Thread.threadLocals字段)。 API隐藏了实现细节,但这或多或少都与它有关。