低开销、无阻塞 I/O、用于 Java 的外部进程实现
[![][Build Status img]][构建状态]
[![][Shippable Status img]][可发货状态]
[![][license img]][license]
[![][Maven Central img]][Maven Central]
[![][Javadocs img]][Javadocs]
这是一种低开销、非阻塞 I/O、用于 Java 的外部进程执行实现。 它是
java.lang.ProcessBuilder 和 java.lang.Process。
您是否曾经被困扰于这样一个事实:每当在 Java 中创建一个进程时,您都必须创建两个或三个"泵"线程(对于每个进程),以从"stdout"和"stderr"管道中提取数据,并将数据泵入"stdin"。如果您的代码启动了大量进程,那么您可能会有数十个或数百个线程在做无用的工作,仅仅是泵数据。
NuProcess 4.x 需要 Java 25 或更高版本。3.x 及早期版本基于 JNA,支持 Java 1.7 及更高版本。
java.lang.Process 快 20%,对于大量进程而言。 但是,当涉及内存时,就有明显的差异。 例如,500 个线程的开销与 NuProcess 使用的一个或几个线程相比是非常大的。此外,在基于 Unix 的平台(如 Linux)上,在创建新进程时,java.lang.Process 会使用 fork()/exec() 操作。这需要在执行 exec 操作之前先创建 Java 进程的临时副本(fork)。在 Linux 上运行测试时,
暂无开放 Issues,或尚未同步最近议题。