Подтвердить что ты не робот

Как создать процесс в Java

Я хотел бы создать процесс в своем приложении. Но после осмотра и использования Java API я все еще не совсем понял.

В основном я хочу создать многопроцессное приложение. Но новый процесс - это класс в моем приложении.

Я знаю, что некоторые из вас могут спросить, почему бы не создать поток? Поскольку класс вызывает код matlab, проблема и класс Java Здесь

Есть ли какой-либо пример кода или учебник, который любой из вас может порекомендовать? Спасибо.

4b9b3361

Ответ 1

Существует только один способ создания процессов в Java, Runtime.exec() - в основном это позволяет вам запускать новую JVM так же, как и вы через интерфейс командной строки.

Ответ 2

Может быть java.lang.Process может помочь здесь.

Методы ProcessBuilder.start() и Runtime.exec создают собственный процесс и возвращают экземпляр подкласса Process, который может использоваться для управления процессом и получения информации об этом. Класс Process предоставляет методы для выполнения ввода из процесса, выполнения вывода в процесс, ожидания завершения процесса, проверки состояния выхода процесса и уничтожения (уничтожения) процесса.

Ответ 3

Если вы хотите более мелкозернистый элемент управления, вы можете использовать ProcessBuilder - этот класс позволяет устанавливать переменные среды и настраивать проект трубы (stdout, in, err).

Как только вы его настроили, вы можете вызывать ProcessBuilder#start() столько раз, сколько хотите, чтобы создавать новые процессы (он возвращает экземпляр Process). Вы можете изменить конфигурацию для новых процессов между этими вызовами на start().

Ответ 4

Я думаю, вы знаете, как создать новый процесс. Если нет, см. здесь или здесь.

Теперь вам нужно запустить java.exe с помощью текущего пути к классам. Этот путь класса можно найти в свойстве System java.class.path. Чтобы найти java.exe, просмотрите new File( System.getProperty("java.home"), "bin").

Если у вас есть проблемы с этим подходом, я предлагаю написать оболочку script и называть ее достаточным количеством аргументов, поэтому код в main() может решить, какой именно класс запускать.

Ответ 5

Моя рекомендация - взглянуть на zt-exec: https://github.com/zeroturnaround/zt-exec

Он завернул java.lang.ProcessBuilder и Apache Commons Exec и мог легко управлять жизненным циклом процесса.