用Java分叉进程

时间:2009-05-13 12:42:27

标签: java runtime

是否可以从单个执行序列中创建一个'PROGRAM'的完整分支到两个子程序中?

制作的子程序完全相同。它们具有相同的执行顺序和值,但现在它们是两个不同的程序。这就像创建一个Object的克隆,从而为我们提供了两个相同类型的不同对象。但是,我们不是只是一个对象和一些值,而是在这里创建一个已经加载到JVM中的程序的完全并行执行序列(更喜欢Java的答案)。

4 个答案:

答案 0 :(得分:7)

您似乎在寻找Unix中fork system call的Java等价物。

在Java中不存在,并且不清楚它是否可能,因为Unix中的进程在JVM中没有直接等价物(线程不如进程独立)。

然而,为Java 7计划了一个fork框架:

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

它与Unix'es fork / join不同,但它分享了一些想法并且可能有用。

当然你可以用Java进行并发编程,它不是通过fork()完成的,而是使用Threads。

答案 1 :(得分:4)

我不确定你到底想要做什么。听起来我觉得你有一个解决方案可以解决一个最好以另一种方式解决的问题。这样的事情会实现最终目标吗?

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()放在真实应用中的另一个对象中,因为生命周期管理是一个单独的问题。

答案 2 :(得分:1)

好吧,使用ProcessBuilder,你可以生成另一个程序。

请参阅Java equivalent of fork in Java task of Ant?

答案 3 :(得分:0)

请阅读主题herehere