Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么DefaultExecutor要创建两个线程来调用命令";php file.php";_Java_Multithreading_Apache Commons - Fatal编程技术网

Java 为什么DefaultExecutor要创建两个线程来调用命令";php file.php";

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

我使用ApacheCommonsExec的DefaultExecutor来执行一个php,但是当我看到概要文件时,我看到最后一行,execute函数正在创建两个并行线程来调用同步进程。为什么?

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中,当您执行单独的进程时,您需要额外的线程来正确处理标准输出/错误(否则进程可能会阻塞)。我猜这些是您看到的额外线程(关于处理进程执行的详细信息)