在 Java 中查找进程计数
Find Process Count in Java
我可以在以下命令的帮助下启动 Process
,在启动多个进程后,我想控制在某个时候要保留的进程数。
例如:
- 在范围为 0 到 50
的 for
循环中启动 Process
- 一旦活动进程总数达到 5
就暂停 for
循环
- 从 5 下降到 4 或 3 后恢复
for
循环 ...
我试过下面的代码,但我遗漏了一些东西。
public class OpenTerminal {
public static void main(String[] args) throws Exception {
int counter = 0;
for (int i = 0; i < 50; i++) {
while (counter < 5) {
if (runTheProc().isAlive()) {
counter = counter + 1;
}else if(!runTheProc().isAlive()) {
counter = counter-1;
}
}
}
}
private static Process runTheProc() throws Exception {
return Runtime.getRuntime().exec("cmd /c start cmd.exe /c \"dir && ping localhost\"");
}
}
另外,如何找出有多少进程处于活动状态?这样我就可以一次控制活动进程。
您可以使用固定大小的线程池。
例如:
public static void main(String[] args) throws Exception {
ExecutorService threadPool = Executors.newFixedThreadPool(5);
for (int i = 0; i < 50; i++) {
threadPool.submit(runTheProc);
}
}
private static final Runnable runTheProc = () -> {
Process process;
try {
process = Runtime.getRuntime().exec("cmd /c start cmd.exe /c \"dir && ping localhost\"");
} catch (Exception e) {
throw new RuntimeException(e);
}
while (process.isAlive()) { }
};
我可以在以下命令的帮助下启动 Process
,在启动多个进程后,我想控制在某个时候要保留的进程数。
例如:
- 在范围为 0 到 50 的
- 一旦活动进程总数达到 5 就暂停
- 从 5 下降到 4 或 3 后恢复
for
循环 ...
for
循环中启动 Process
for
循环
我试过下面的代码,但我遗漏了一些东西。
public class OpenTerminal {
public static void main(String[] args) throws Exception {
int counter = 0;
for (int i = 0; i < 50; i++) {
while (counter < 5) {
if (runTheProc().isAlive()) {
counter = counter + 1;
}else if(!runTheProc().isAlive()) {
counter = counter-1;
}
}
}
}
private static Process runTheProc() throws Exception {
return Runtime.getRuntime().exec("cmd /c start cmd.exe /c \"dir && ping localhost\"");
}
}
另外,如何找出有多少进程处于活动状态?这样我就可以一次控制活动进程。
您可以使用固定大小的线程池。 例如:
public static void main(String[] args) throws Exception {
ExecutorService threadPool = Executors.newFixedThreadPool(5);
for (int i = 0; i < 50; i++) {
threadPool.submit(runTheProc);
}
}
private static final Runnable runTheProc = () -> {
Process process;
try {
process = Runtime.getRuntime().exec("cmd /c start cmd.exe /c \"dir && ping localhost\"");
} catch (Exception e) {
throw new RuntimeException(e);
}
while (process.isAlive()) { }
};