在Java中,我如何从头开始实现自己的ThreadLocal?

时间:2013-01-11 10:24:14

标签: java

  

可能重复:
  How is Java’s ThreadLocal implemented under the hood?

自从我用Java编程以来已经有一段时间了,我想要梳理一些理论。

如何从头开始实现自己的ThreadLocal?

3 个答案:

答案 0 :(得分:2)

是。您可以在线程的子类中复制线程并复制实现。或者您可以只读取代码,但获得正确的ThreadLocal是非常棘手的。

有许多棘手的元素,最明显的是防止线程中的内存泄漏未被删除。

即使是现有的实现也会遇到以下问题:子类ThreadLocal对象可能会阻止ClassLoaders卸载。

答案 1 :(得分:2)

试试这个:

new Thread()
{
    //contents
}.start();

您可以在代码中的任何位置生成此内容。

答案 2 :(得分:0)

事实证明这个问题是重复的:

这很简单,实际上,它只是存储在每个Thread对象中的名称 - 值对的Map(请参阅Thread.threadLocals字段)。 API隐藏了实现细节,但这或多或少都与它有关。