Java 为什么DefaultExecutor要创建两个线程来调用命令";php file.php";
我使用ApacheCommonsExec的DefaultExecutor来执行一个php,但是当我看到概要文件时,我看到最后一行,execute函数正在创建两个并行线程来调用同步进程。为什么?Java 为什么DefaultExecutor要创建两个线程来调用命令";php file.php";,java,multithreading,apache-commons,Java,Multithreading,Apache Commons,我使用ApacheCommonsExec的DefaultExecutor来执行一个php,但是当我看到概要文件时,我看到最后一行,execute函数正在创建两个并行线程来调用同步进程。为什么? CommandLine command = new CommandLine("php"); command.addArgument("file.php"); DefaultExecutor exec = new DefaultExecutor(); PumpStreamHandler streamHa
CommandLine command = new CommandLine("php");
command.addArgument("file.php");
DefaultExecutor exec = new DefaultExecutor();
PumpStreamHandler streamHandler = new PumpStreamHandler(null, null);
exec.setStreamHandler(streamHandler);
int execute = exec.execute(command);
问题是我调用N个线程,其中一个循环调用exec.execute(命令);,因此,如果我使用3个线程,每次调用execute时,应用程序都会创建6个新线程,当exec.execute(命令)发出时,这些线程就会消失;完成
我不熟悉所讨论的库,但通常在java中,当您执行单独的进程时,需要额外的线程来正确处理标准输出/错误(否则进程可能会阻塞)。我猜这些是您看到的额外线程(关于处理进程执行的详细信息)。我不熟悉所讨论的库,但通常在java中,当您执行单独的进程时,您需要额外的线程来正确处理标准输出/错误(否则进程可能会阻塞)。我猜这些是您看到的额外线程(关于处理进程执行的详细信息)