-1

重複の可能性:
JavaのThreadLocalは内部でどのように実装されていますか?

Javaでプログラミングしてからしばらく経ちましたが、理論を一新したいと思います。

独自のThreadLocalを最初から実装するにはどうすればよいですか?

4

3 に答える 3

2

はい。スレッドをサブクラス化し、スレッドのソースに実装をコピーできます。または、コードを読むだけでも、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 に答える