在 Java 中实现并行执行两个进程,你可以使用 Java 的多线程来同时启动两个进程。以下是一个简单的例子,使用 ExecutorService
和 Future
来实现:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;
public class ParallelProcesses {
public static void main(String[] args) {
// 创建线程池
ExecutorService executorService = Executors.newFixedThreadPool(2);
// 提交两个进程任务
Future<?> future1 = executorService.submit(() -> executeProcess("java Process1"));
Future<?> future2 = executorService.submit(() -> executeProcess("java Process2"));
// 等待两个任务完成
try {
future1.get();
future2.get();
} catch (Exception e) {
e.printStackTrace();
} finally {
// 关闭线程池
executorService.shutdown();
}
}
private static void executeProcess(String command) {
try {
Process process = Runtime.getRuntime().exec(command);
// 处理进程的输出
try (BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()))) {
String line;
while ((line = reader.readLine()) != null) {
System.out.println(line);
}
}
// 等待进程执行完成
int exitCode = process.waitFor();
if (exitCode == 0) {
System.out.println("Process executed successfully");
} else {
System.out.println("Error executing process. Exit code: " + exitCode);
}
} catch (IOException | InterruptedException e) {
e.printStackTrace();
}
}
}
在这个例子中,executeProcess
方法用于执行给定的命令。通过 ExecutorService
同时提交两个任务,然后通过 Future
对象等待任务完成。这样可以确保两个进程在并行执行,而不必等待一个完成后再执行另一个。