Tag: fork

Java相当于Ant的Java任务中的fork?

Ant Java任务提供了fork参数,根据定义“如果启用则触发另一个VM中的类执行” 。 当我们处理大量数据时,设置此参数可以使我们免于耗尽Java堆空间。 我们希望能够通过Java类做同样的事情。 实现fork提供的function的最佳方法是什么?

为什么ant.bat在以编程方式运行时不会返回错误状态?

当我从命令行运行ant时,如果我遇到故障,我会得到一个非零退出状态(在UNIX上是$ ?,在Windows上是%ERRORLEVEL%)。 但是我们有一个运行ant的Java程序(通过ProcessBuilder),当ant失败时,在Windows上我们无法获得退出状态。 我刚用这个简单的ant测试文件validation了这个: 在UNIX上,运行ant会打印失败消息,并回显$? 之后打印1.在Windows上,运行ant或ant.bat打印失败消息,然后回显%ERRORLEVEL%打印1。 现在,使用下面的测试程序:在UNIX上,java Run ant打印失败消息,并回显$? 后续打印1.在Windows上,java Run ant无法找到名为ant的程序运行,但java Run ant.bat打印出一条失败消息,然后回显%ERRORLEVEL%后打印0 。 是什么赋予了? 我们依靠能够在运行ant之后检查退出状态。 无论如何,我们是。 为什么我们不能以编程方式依赖于此? 测试程序: import java.io.*; public class Run { public static void main(String[] args) throws IOException, InterruptedException { ProcessBuilder pb = new ProcessBuilder(args); Process p = pb.start(); ProcThread stdout = new ProcThread(p.getInputStream(), System.out); ProcThread stderr = new ProcThread(p.getErrorStream(), […]

ProcessBuilder – 启动另一个进程/ JVM – HowTo?

我正在编写一个网络应用程序,其中每个客户端都有一个Singleton ClientManager。 为了测试 ,我想创建几个客户端(每个客户端都在自己的VM /进程中),而不是手动启动程序n次。 有关stackoverflow的以下两个问题已经描述了如何做到这一点: 这真的是从Java代码启动第二个JVM的最佳方法吗? Java:在单独的进程中执行Java应用程序 我的代码基于这些,但它不起作用: 调用spawn后,主程序不会继续。 生成的代码不会被执行。 这是使用ProcessBuilder的完整代码: public class NewVM { static class HelloWorld2 { public static void main(String[] args) { System.out.println(“Hello World”); System.err.println(“Hello World 2”); } } public static void main(String[] args) throws Exception { startSecondJVM(HelloWorld2.class, true); startSecondJVM(HelloWorld2.class, false); System.out.println(“Main”); } public static void startSecondJVM(Class clazz, boolean redirectStream) throws […]

Java中的Fork连接矩阵乘法

我正在对Java 7中的fork / join框架进行一些性能研究。为了改进测试结果,我想在测试期间使用不同的递归算法。 其中一个是乘法矩阵。 我从Doug Lea的网站()下载了以下示例: public class MatrixMultiply { static final int DEFAULT_GRANULARITY = 16; /** The quadrant size at which to stop recursing down * and instead directly multiply the matrices. * Must be a power of two. Minimum value is 2. **/ static int granularity = DEFAULT_GRANULARITY; public static void main(String[] […]