#java #javac
#Ява #javac
Вопрос:
Рассмотрим набор из N .java
файлов, которые имеют взаимозависимости между классами, которые они определяют, так что каждый файл использует по крайней мере несколько других файлов и должен иметь их в пути к классу для компиляции.
Если я разверну N экземпляров javac
и попытаюсь скомпилировать эти классы параллельно, существует ли риск того, что различные экземпляры перезапишут выходные файлы друг друга и выйдут из строя из-за неверных ожиданий относительно состояния файловой системы?
Комментарии:
1. Хотя я не могу говорить о параллельном запуске
javac
для вывода в один и тот же каталог, не должно быть никаких проблем с запуском несколькихjavac
экземпляров в разные выходные каталоги (т. Е. с использованиемjavac -d OUTPUT_DIR
)2. Небезопасно. Не делай этого.
3. Обратите внимание, что в отличие от компилятора C, который может работать независимо с различными файлами «.c», компилятору Java нужны файлы классов связанных классов. Поэтому, если у вас есть класс A, класс B расширяет A, класс C расширяет B, то для компиляции класса C компилятору нужны файлы классов для классов A и B (и он создает их сам, если не находит их). Если другой экземпляр javac будет компилировать классы A и B отдельно, в худшем случае файл класса для класса A создается три раза, в лучшем случае только напрасно тратя ресурсы.