Ответ 1
Thread.currentThread().getContextClassLoader()
Возвращает контекст
ClassLoader
для этогоThread
. КонтекстClassLoader
предоставляется создатель потока для использования кодом, выполняющимся в этом потоке, когда загрузка классов и ресурсов. Если не установлено, по умолчанию используетсяClassLoader
контекст родительского потока. КонтекстClassLoader
из первичный поток обычно устанавливается в загрузчик классов, используемый для загрузить приложение.
Class#getClassLoader()
Возвращает загрузчик класса для класса. Некоторые реализации могут использовать
null
для представления загрузчика классов начальной загрузки. Этот метод вернетnull
в таких реализациях, если этот класс был загружен загрузчиком загрузчик классов.
В двух словах:
Thread.currentThread().getContextClassLoader()
- это ClassLoader
контекста потока, который был установлен с помощью setContextClassLoader(ClassLoader cl)
. Представьте, что у вас есть сложное Java-приложение с иерархией ClassLoader
(например, Сервер приложений), и вы хотите, чтобы ваш текущий поток загружал классы или ресурсы из одного конкретного ClassLoader
в этой иерархии, вы можете сделать это, просто установив контекст ClassLoader
потока для этого конкретного ClassLoader
.
Class#getClassLoader()
- это просто ClassLoader
, из которого был загружен ваш экземпляр Class
.