JSF2.0 Web 内で、一度に 1 スレッドずつバックグラウンドでいくつかのシェル スクリプトを呼び出しています。これらのプログラムがすべて正常に呼び出されるまで待つ必要があります。以下はコードのスニペットです-
ExecutorService taskExecutor = Executors.newSingleThreadExecutor();
for (String script : scriptList){
taskExecutor.execute(new Runnable() {
@Override
public void run() {
try {
log.info("Trying to start script " +script);
startScript(program);
} catch (Exception ex) {
log.error("Exception ." + ex.getMessage());
}
}
});
}
taskExecutor.shutdown();
try {
taskExecutor.awaitTermination(Long.MAX_VALUE, TimeUnit.NANOSECONDS);
} catch (InterruptedException e) {
log.error("InterruptedException ." + e.getMessage());
}
// Now I can proceed further can call other methods
上記のコードから実行しているシェル スクリプトはstdout
、実行時に表示されます。スクリプトをキャプチャせずに、バックグラウンドでスクリプトを 1 つずつ呼び出したいstdout
。完成まで待ちたくない。シグナルのみを呼び出します。