невозможно убить процесс с помощью Process.destroy () - PullRequest
1 голос
/ 27 июля 2011

Я просто экспериментирую с классами Java времени выполнения и процесса. Я пытаюсь открыть приложение, подобное слову Windows, используя Runtime.exec(), а затем некоторое время жду и пытаюсь уничтожить его, используя метод 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 Ответ

3 голосов
/ 27 июля 2011

Проблема в том, что вы не можете вызвать Object.wait(), не держа монитор для этого объекта:

StringTesting st = new StringTesting();
synchronized (st) {
    st.wait(5000);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...