Форкинг процесса в Java - PullRequest
3 голосов
/ 13 мая 2009

Можно ли создать полный форк «ПРОГРАММЫ» при исполнении в две подпрограммы из одной последовательности выполнения?

Производимые подпрограммы полностью идентичны. Они имеют одинаковые последовательности выполнения и значения, но теперь это две разные программы. Это похоже на создание клона объекта, что дает нам два разных объекта одного типа для работы. Но вместо простого объекта и некоторых значений здесь мы хотим создать полностью параллельную последовательность выполнения Программы, уже загруженной в JVM (предпочли бы ответ для Java).

Ответы [ 4 ]

7 голосов
/ 13 мая 2009

Вы, похоже, ищете Java-эквивалент системного вызова fork из Unix.

Этого нет в Java, и неясно, будет ли это вообще возможно, поскольку процессы в Unix не имеют прямого эквивалента в JVM (потоки менее независимы, чем процессы).

Однако для Java 7 планируется фреймворк:

http://www.ibm.com/developerworks/java/library/j-jtp11137.html

Это не то же самое, что Unix's fork / join, но он разделяет некоторые идеи и может быть полезен.

Конечно, вы можете выполнять параллельное программирование на Java, просто это делается не с помощью fork (), а с использованием Threads.

4 голосов
/ 13 мая 2009

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

public class MyApp implements Runnable
  {
  public MyApp(int foo, String bar)
    {
    // Set stuff up...
    }

  @Override
  public void run()
    {
    // Do stuff...
    }

  public static void main(String[] argv)
    {
    // Parse command line args...

    Thread thread0 = new Thread(new MyApp(foo, bar));
    Thread thread1 = new Thread(new MyApp(foo, bar));

    thread0.start();
    thread1.start();
    }
  }

Хотя я бы, вероятно, поместил main() в другой объект в реальном приложении, поскольку управление жизненным циклом является отдельной задачей.

1 голос
/ 13 мая 2009

Ну, используя ProcessBuilder, вы можете запустить другую программу.

См. Java-эквивалент форка в Java-задаче Ant?

0 голосов
/ 13 мая 2009

Пожалуйста, прочтите темы здесь и здесь .

...