スレッド コンテキスト クラス ローダーと通常のクラス ローダー
Java は、クラス ロードに 2 つの異なるメカニズムを提供します。スレッドのコンテキスト クラス ローダーと通常のクラス ローダーです。クラスローダー。
スレッドのコンテキストクラスLoader
コンテキスト クラス ローダーは、各スレッドに関連付けられたクラス ローダーです。これは、リフレクションや逆シリアル化を使用する場合など、スレッドがクラスを動的にロードする必要がある場合に使用されます。デフォルトでは、コンテキスト クラス ローダーは、スレッドのメイン クラスをロードしたクラス ローダーの親クラス ローダーに設定されます。
通常のクラス ローダー
通常のクラス ローダー現在のクラスのクラスをロードするために使用されるクラスローダーです。これは、getClass().getClassLoader() メソッドを使用して取得されます。通常、通常のクラス ローダーはコンテキスト クラス ローダーと同じです。つまり、メイン クラスをロードしたクラス ローダーの親クラス ローダーです。
どのクラス ローダーが使用されますか?
スレッドがクラスを動的にロードする場合、通常はコンテキスト クラス ローダーを使用します。ただし、スレッドのコンテキスト クラス ローダーが通常のクラス ローダーと異なる場合、どちらが使用されるかはコンテキストによって異なります。
特定の状況でのみ、コンテキスト クラス ローダーの代わりに通常のクラス ローダーを使用できます。たとえば、コンテキスト クラス ローダーが null の場合、通常のクラス ローダーが使用されます。
推奨事項
一般に、通常のクラス ローダー (つまり、 、getClass().getClassLoader()) は、コンテキスト クラス ローダーが異なる場合でも、クラスを明示的にロードするときに使用します。明示的なクラスのロードでは、ロードを実行するクラスのクラスローダーを常に使用する必要があります。
以上がスレッド コンテキスト クラス ローダーと通常のクラス ローダー: いつどちらを使用する必要がありますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。