2012-03-29 3 views
3

Мне нужно запустить исполняемый JAR-файл в нескольких потоках/ядрах. Файл JAR не реализует Runnable. Я искал способ сделать это и не нашел его. Можно ли сделать JAR-файл использовать несколько потоков/ядер без доступа к исходному коду?Как запустить файл jar в нескольких потоках?

В настоящее время. если я просто запускаю JAR-файл нормально, он использует только одно ядро.

+2

Файлы Jar содержат классы Java и другие ресурсы. Jar не является Java-классом и поэтому не может «реализовать Runnable». Измените свой вопрос и сделайте шаг назад и предоставьте информацию о том, что вы пытаетесь выполнить. – Gray

ответ

8

Невозможно магически сделать программу (неважно, упакован ли она в Java JAR-файл или каким-либо другим способом), автоматически использовать несколько ядер. Программа должна быть написана для использования нескольких ядер - другого выхода нет.

3

Нет, вы не можете. Вы можете запускать несколько процессов java с тем же JAR в разных потоках, но это может быть не то, что вы хотите.

1

Если jar является исполняемым банком, то он имеет основной метод (основной класс указан в манифесте файла jar). вы можете вызвать этот основной метод в своем собственном экземпляре Runnable.

Однако, если классы в этой банке используют статические ресурсы без соответствующей синхронизации, эта стратегия не будет работать. если это так, вы можете настроить отдельный ClassLoader для Runnable и запустить каждый экземпляр jar в своем изолированном ClassLoader (тогда вам нужно будет вызвать основной метод с использованием отражения).

Смежные вопросы