Интересно, имеет ли смысл case2 ниже код в Java или нет. Цель состоит в том, чтобы просто создать несколько процессов. Например, мы хотим создать 5 процессов.
public class TestProcess {
public static void main(String[] args) throws IOException {
TestProcess tp = new TestProcess();
tp.createProcess(); // case 1
tp.createProcessViaThread(); // case 2
}
void createProcess() throws IOException {
for (int i = 0; i < 5; i++) {
System.out.println("start process i = " + i);
ProcessBuilder pb = new ProcessBuilder("/bin/bash", "-c", "a.sh");
...
Process process = pb.start();
}
}
void createProcessViaThread() {
Job job = new Job();
ExecutorService executorService = Executors.newFixedThreadPool(50);
for (int i = 0; i < 5; i++) {
String fName = "file_" + i;
executorService.execute(() -> {
try {
job.compute(fName);
} catch (IOException e) {
e.printStackTrace();
}
});
}
}
}
public class Job {
public void compute(String fname) throws IOException {
System.out.println("start process via thread fname = " + fname);
ProcessBuilder pb = new ProcessBuilder("/bin/bash", "-c", "a.sh");
Process childProcess = pb.start();
}
}
, когда мы хотим создать несколько процессов, мы используем случай 1, который непосредственно создает процесс с использованием ProcessBuilder.
Мой вопрос - случай2, который создаетпроцессы из потока является общим случаем?
Если это так,
1) в чем преимущество случая 2 над case1?
2) каков случай использования case2?
Я не видел кода, подобного case2, который создает поток, а затем каждый поток создает процесс. Но я видел этот код сегодня. вот почему я спрашиваю. Я спросил человека, который написал код, почему написал код, подобный случаю 2, и услышал, что они создают несколько процессов одновременно и сразу, без ожидания, что не имеет смысла для меня.