无法使用Process.destroy()杀死进程

时间:2011-07-27 15:01:29

标签: java process

我只是在尝试使用java的Runtime和Process类。我正在尝试使用Runtime.exec()打开像windows word这样的应用程序,然后等待一段时间并尝试使用Process.destroy()方法销毁它。  MS Word正在打开,但它没有在控制台

中关闭抛出异常
exception::java.lang.IllegalMonitorStateException: current thread not owner 

以下是我的代码

 import java.util.*;

public class StringTesting {

    public void open()
    {

        try{
        Runtime runtime = Runtime.getRuntime();

        Process proc =runtime.exec("C:\\Program Files\\Microsoft Office\\Office12\\winword.exe");

        StringTesting st = new StringTesting();

        st.wait(5000);

        // now destroy the process

         proc.destroy();
         System.out.println("  after destroy");
        }
        catch(Exception e)
        {
            System.out.println(" exception::"+e);
        }
    }

    public static void main(String a[])
    {
        StringTesting st = new StringTesting();
          st.open();  
    }

}

1 个答案:

答案 0 :(得分:3)

此处的问题是,如果不保留该对象的监视器,则无法调用Object.wait()

StringTesting st = new StringTesting();
synchronized (st) {
    st.wait(5000);
}