在继续之前如何等待方法完全完成?

时间:2014-04-04 02:47:07

标签: java

下面的编码将在killProcess()杀死之后运行OSK(屏幕键盘)进程,之前在我添加Thread.sleep 1秒之前它不会弹出。那么有没有什么方法可以确保killProcess()在没有Thread.sleep一秒钟的情况下启动OSK进程之前完全执行?一些不是基于时间的东西,一个在进入下一行之前完全运行killProcess()的代码。对不起任何困惑和感谢阅读!希望有人愿意帮助我。

public static void main(String... args) {
    try {
        killProcess();

        try {
            Thread.sleep(1000);
        } catch (InterruptedException ex) {
            Thread.currentThread().interrupt();
        }

        Runtime.getRuntime().exec("c:\\Temp\\osk.exe");

    } catch (Exception ex) {
        ex.printStackTrace();
    }

}

public static void killProcess() throws Exception {

    Runtime rt = Runtime.getRuntime();

    rt.exec("cmd.exe /c taskkill " + "osk.exe");

    Runtime.getRuntime().exec("taskkill /IM " + "osk.exe");

}

1 个答案:

答案 0 :(得分:0)

public static void main(String... args) {
    try {
        killProcess();
        Runtime.getRuntime().exec("c:\\Temp\\osk.exe");

    } catch (Exception ex) {
        ex.printStackTrace();
    }
}

public static void killProcess() throws Exception {
    Runtime rt = Runtime.getRuntime();
    rt.exec("cmd.exe /c taskkill " + "osk.exe").waitFor();
    rt.exec("taskkill /IM " + "osk.exe").waitFor();
}

Runtime.exec(String)返回Process,其中包含waitFor()方法。这将阻止当前Thread,直到进程终止。