Разветвление процессов, дочерние процессы и т. Д. [Java] - PullRequest
0 голосов
/ 09 февраля 2011

Мне нужно реализовать векторные часы в небольшом упражнении по программированию, и я решил использовать для него Java.Мой вопрос не связан с фактическим алгоритмом управления векторными часами процессов, но как относительно легко инициализировать другие приложения Java или дочерние процессы из другой программы Java?

Мой первоначальный план следующий: у меня есть«основная программа», которая определяет, сколько клиентов / дочерних элементов следует запустить, а затем эти дочерние элементы / клиенты должны связываться друг с другом и соответствующим образом обновлять свои соответствующие векторные часы.Количество клиентов, которые должны быть запущены, зависит от количества строк в определенном входном файле, переданном «основной программе».Какой самый элегантный способ запустить эти клиентские процессы?Каждый из них должен принимать два файла и целое число в качестве параметров.В файлах указывается, что делать (отправка или предварительная синхронизация), а целое число указывает, с какой строки в файле конфигурации клиент должен выбрать номер своего порта для использования.

Ответы [ 2 ]

2 голосов
/ 09 февраля 2011

В Java концепция создания одновременных задач основана на threads, а не processes. Чтобы начать новый process, вы обычно должны вызывать Java несколько раз или использовать интерфейс ProcessBuilder . Параллелизм в Java предназначен для потоков, поэтому я рекомендую вам попробовать, например:

public static void main(String[] args) {
    int numberOfThreads  = ...
    for(int i = 0; i < numberOfThreads; i++) {
        File f1 = ...
        File f2 = .... 
        int j = ... 

        new Thread(new VectorClock(f1, f2, j)).start();
    }
}

public class VectorClock implements Runnable {
    public VectorClock(File file1, File file2, int i) {
       // ...
    }

    @Override
    public void run() {
        // this gets executed when invoked by a threads .start() routine
    }
}
0 голосов
/ 09 февраля 2011

Посмотрите на этот ответ для C-подобных вилок в Java.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...