如何实现:在代码执行完一个外部应用程序后,再继续往下执行,就象在一个单线程里运行一样---------------
代码片段:在这个片段里,在执行sentgz.exe时,也完成了写文件。但我希望先执行sentgz.exe,再写文件。String k = new String("D:\\program\\sentgz.exe");
try{
   java.lang.Runtime.getRuntime().exec(k);
   }
catch (Exception e){
   e.printStackTrace();
   }try{
    PrintWriter pw = new PrintWriter(new FileOutputStream(StrFileName));
    pw.print(WriteMe);
    pw.close();
    } 
catch (Exception e){
    e.printStackTrace();
    }

解决方案 »

  1.   

    Process p= java.lang.Runtime.getRuntime().exec(k);
    p.waitFor();
      

  2.   

    sleep不能保证上一个执行完,上一个执行完可能也要等很久才继续,似乎不太好
      

  3.   

    用线程,把执行sentgz.exe放在另一个线程B去操作,然后notify主线程A
    主线程A:
    .
    B b = new B(this);
    把执行sentgz.exe放在另一个线程B去操作;
    B.start();
    A.wait();
    ~~~~~~~~
    在线程B中,当操作结束后,A的引用.notifyall();
      

  4.   

    用线程
    synchronized(this){
    public void run(){}
    }
      

  5.   

    Process p= java.lang.Runtime.getRuntime().exec(k);
    p.waitFor();
      

  6.   

    waitFor();
    或者你自己捕获它的输出流,让它输出什么时,就表示结束.