Для существующего Java-приложения (которого у меня нет исходного кода) я разрабатываю плагин, который вызывает общую библиотеку.
К сожалению, эта общая библиотека ( написана на C ) не является поточно-ориентированной.
Приложение вызывает мой плагин в нескольких параллельных потоках, следовательно, разделяемая библиотека вызывается этими параллельными потоками и, естественно, выдает много ошибок из-за параллелизма (например, предотвращается открытие уже открытых файлов и т. Д.)
Я получаю доступ к общей библиотеке через JNA . У меня даже есть исходный код этой общей библиотеки, но преобразование в поточно-ориентированную библиотеку займет много времени и в настоящее время невозможно.
Существуют ли другие предлагаемые способы преодоления этой проблемы?
Все нативные функции доступны только из одного метода Java, поэтому я думаю, что решение синхронизированный может быть решением. Вы бы согласились?
Я пробовал это, но, к сожалению, проблема не решена. В файле журнала я все еще вижу, что метод Java вызывается одновременно, и поэтому мои собственные попытки решить эту проблему потерпели неудачу.