Семафор с процессом ОС в Java - PullRequest
1 голос
/ 14 марта 2019

Я выполняю программу, используя Java ProcessBuilder, чтобы запустить ее как программу ОС.

Запрос помещается в очередь, из которой потребитель будет его использовать и запускать.Внутри потребителя я использовал semaphore (8) и службу executor для отправки запроса в виде потока.

Ниже приведен соответствующий код.

ProcessBuilder bldr = new ProcessBuilder().command(commandArray);
bldr.redirectErrorStream(true);
process = bldr.start();
BufferedReader br = new BufferedReader(new InputStreamReader(process.getInputStream()));
String ch;
while ((ch = br.readLine()) != null) {
    output = output + ch;
}
br.close();
result = process.waitFor();
....
private static Semaphore semaphore;
private static ExecutorService threadExecutor;
....
semaphore = new Semaphore(8, true);
threadExecutor = Executors.newFixedThreadPool(8);
....
ExecutorWorkerThread thread = new ExecutorWorkerThread(request);
threadExecutor.submit(thread);
semaphore.acquire();

Теперь проблема не зависит от этого семафора.(8) процессы выполняются один за другим, а не параллельно.

Ожидаю ли я правильного поведения и поступаю правильно?Пожалуйста, поправьте меня.Дайте мне знать, если потребуется дополнительная информация.

...