2016-02-25 2 views
0

A partir de cette situation:Processus p = Runtime.getRuntime(). Exec() s'exécutera de manière asynchrone?

 for (String certificateSha1:certificateSha1List){ 
      Process p = Runtime.getRuntime().exec(new String [] {"security", "delete-certificate", "-Z", certificateSha1}, null , new File(this.workDir+""));  

      Helpers.asynchOutputWrite(new InputStreamReader(p.getInputStream()), standardOutput); 
     } 

Et de noter que Helpers.asynchOutputWrite génère un nouveau thread qui va écrire le flux paramétrisé dans ce fichier de sortie ... seront ces fils se chevauchent eux-mêmes dans le fichier d'écriture? ou est-ce que l'itération suivante de la méthode for wait jusqu'à la fin de la méthode exec() a été finalisée?

Merci

Répondre

3

À moins que vous appelez p.waitFor(); votre processus se fera un plaisir exécuter simultanément le long du processus qui a donné naissance à ce (p).

+0

il est donc suffisant d'ajouter p.waitFor(); après Helpers.asynchOutputWrite? – NullPointerException

+0

@NullPointerException si vous voulez attendre la fin du processus, oui. –