Вы можете убедиться, что рассматриваемая библиотека используется только из одного потока за раз. Если он содержит инстанцируемые классы, одна из возможностей - хранить их в локальном хранилище потока .
Или вы можете создать потокобезопасную оболочку вокруг нее.
Эти подходы также могут быть объединены, например, вы можете обернуть библиотеку в класс (в данном случае это будет Facade ), который сам по себе не является поточно-ориентированным, но к экземплярам которого вы обращаетесь из одного потока за раз.
Обновление: , как указал @Wim, если библиотека управляет глобальным состоянием, вы должны иметь поточно-ориентированную оболочку, чтобы гарантировать, что изменения становятся видимыми между потоками.