Теоретически можно дважды загрузить библиотеку в отдельных загрузчиках классов. Практика может быть более сложной.
Чтобы связать ссылку на копию в разных загрузчиках классов, вам также необходимо несколько раз загрузить код в эти загрузчики классов (или загрузчик дочерних классов). Общее взаимодействие между экземплярами кода должно проходить через код, загруженный в общий базовый класс. Держите отражение до абсолютного минимума . Классы, загруженные различными загрузчиками классов, будут несовместимы, даже если они имеют одинаковые имена, что обычно проявляется как причудливые ClassCastException
s. Например, объект времени выполнения и тип приведения имеют одно и то же имя. Следующий? Вы уверены, что хотите это сделать?
Вероятно, есть причина, по которой метод синхронизирован. Вероятно, причина действительно плохая. Там будет изменчивая статика. Поскольку вы загрузили код более одного раза, будет несколько копий этой изменяемой статики. Если они просто кэши, это может быть не так уж плохо. Тем не менее, библиотека почти наверняка отстой.
NB: Загрузчик класса контекста потока имеет очень мало общего с чем-либо, кроме как испортить вещи.