Pessoal,
Thread threadPhyml = new Thread(new Runnable() {
public void run() {
try {
phyml = Runtime.getRuntime().exec((pegaCaminho) + ("programas/phyml_v2.4.5/phyml ") + (ControladorPHYML.guardaArquivo));
} catch (IOException e) {
e.printStackTrace();
}
try {
phyml.waitFor();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
});
threadPhyml.start();
JOptionPane.showMessageDialog(null, "PHYML terminou de ser executado!", PHYML, JOptionPane.INFORMATION_MESSAGE);
phyml.destroy();
Nesse código acima estou tendo o seguinte problema:
Quando coloco o Runtime.getRuntime().exec() para ser executado fora da Thread funciona beleza, mas eu preciso que seja executado em uma nova Thread, mas dessa forma aí encima não funciona, quer dizer funciona, mas é como se não fosse executado em um nova Thread, pois meu programa fica travado esperando essa execução terminar, sendo que não era pra ficar travado esperando, pois se foi iniciada em uma nova Thread o programa deve continuar sua execução independente dessa ter terminado. Se alguem puder me dizer o que está errado, ou dizer como seria o código para executar o comando abaixo em uma nova Thread serei grato.
try {
phyml = Runtime.getRuntime().exec((pegaCaminho) + ("programas/phyml_v2.4.5/phyml ") + (ControladorPHYML.guardaArquivo));
} catch (IOException e) {
e.printStackTrace();
}
try {
phyml.waitFor();
} catch (InterruptedException e) {
e.printStackTrace();
}
JOptionPane.showMessageDialog(null, "PHYML terminou de ser executado!", PHYML, JOptionPane.INFORMATION_MESSAGE);
phyml.destroy();
detalhe o Thread.start() deve ser dado antes do phyml.destroy(), se não o comando nem executa.
phyml é do tipo Process.
flw.