-1

可能重复:
Java 的 ThreadLocal 是如何在底层实现的?

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

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

4

3 回答 3

2

是的。您可以对线程进行子类化并在 Thread 的源代码中复制实现。或者您可以只阅读代码,但正确获取 ThreadLocal 是很棘手的。

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

即使是现有的实现也存在子类化 ThreadLocal 对象会阻止 ClassLoader 卸载的问题。

于 2013-01-11T10:25:52.650 回答
2

试试这个:

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

您可以在代码中的任何位置生成它。

于 2013-01-11T10:32:10.693 回答
0

原来这个问题是重复的:

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

于 2013-01-11T10:41:19.033 回答