1. ホーム

[解決済み】スレッドのコンテキストクラスローダと通常のクラスローダの違いについて

2022-04-03 23:40:58

質問

スレッドのコンテキスト・クラス・ローダーと通常のクラス・ローダーの違いは何ですか?

つまり、もし Thread.currentThread().getContextClassLoader()getClass().getClassLoader() は異なるクラス・ローダー・オブジェクトを返しますが、どちらが使われるのでしょうか?

解決方法は?

各クラスは、他のクラスをロードするために独自のクラスローダーを使用します。そのため、もし ClassA.class リファレンス ClassB.class では ClassB のクラスローダーのクラスパス上にある必要があります。 ClassA またはその親である。

スレッドコンテキストクラスローダは、現在のスレッドのクラスローダです。のクラスからオブジェクトを作成することができます。 ClassLoaderC が所有するスレッドに渡され、そのスレッドが ClassLoaderD . この場合、オブジェクトは Thread.currentThread().getContextClassLoader() は、自身のクラスローダーで利用できないリソースをロードしたい場合に、直接使用します。