caramba! … ninguém tem idéia de como resolvo isto…
kaique
Cara, se eu não me engano você coloca essa chamada ao seu .bat, que você colocou no seu post, dentro de uma Thread. Depois, com posse do objeto Process, você chama o método waitFor(). Assim, a Thread vai terminar somente quando o seu processo terminar. Acho que isso atende as suas necessidades…
Obs.: Se tiver dificuldades em desenvolver a solução, me avisa que implementei algo aqui que pode te ajudar. Mas não se acostume com ess boa vida…
[]'s.
C
crisleicon
Opa…valeu a dica cara… eu tentei de tudo nesse feriadão…mas num deu certo… minha ultima tentativa foi a seguinte:
eu queria que só executasse o processo P2 somente depois que terminasse a execução do processo P1 (que demora 20 min pra finalizar)…
kaique
Dá uma olhada no que eu fiz aqui e vê se te ajuda…
importjava.io.IOException;/** * Classe que executa um aplicativo do sistema operacional, indicando no fim o * estado atingido, o tempo de execução e o comando executado. * * @author Carlos Henrique ([email removido]) * @since Apr 21, 2009 * @version 1.0 */publicclassPingadorimplementsRunnable{privateStringname;privateStringcommand;privateString[]params;publicPingador(Stringname,Stringcommand,String[]params){this.name=name;this.command=command;this.params=params;}/* * (non-Javadoc) * * @see java.lang.Runnable#run() */publicvoidrun(){StringBufferbuffer=newStringBuffer(command);buffer.append(" ");for(inti=0;i<params.length;i++){buffer.append(params[i]);buffer.append(" ");}Processprocess;intstate=-1;longinitTime=0l;longfinalTime=0l;try{initTime=System.currentTimeMillis();process=Runtime.getRuntime().exec(buffer.toString());state=process.waitFor();finalTime=System.currentTimeMillis();}catch(IOExceptione){e.printStackTrace();}catch(InterruptedExceptione){e.printStackTrace();}System.out.println(name+" finalizou\t[estado: "+state+"]\t[tempo: "+(finalTime-initTime)+"ms]\t\t[comando: "+buffer.toString()+"]");}}
importjava.util.Random;/** * Classe que dispara algumas Thread's que serão responsáveis por executar * certas aplicações do sistema operacional. * * @author Carlos Henrique ([email removido]) * @since Apr 21, 2009 * @version 1.0 */publicclassAnalisador{/** * @param args */publicstaticvoidmain(String[]args){Randomrandom=newRandom();System.out.println("Iniciando as Threads...");for(inti=0;i<15;i++){Pingadorping=newPingador("Thread-"+i,"/sbin/ping",newString[]{"-c",String.valueOf(random.nextInt(20)+1),"www.google.com.br"});newThread(ping).start();}System.out.println("Threads construídas.");}}
Com essas duas classes eu crio várias Threads para pingarem no site do google, com diferentes quantidades de tentativas. Assim sempre consigo saber quando cada processo foi finalizado.
Qualquer dúvida posta…