我只是在尝试使用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();
}
}
答案 0 :(得分:3)
此处的问题是,如果不保留该对象的监视器,则无法调用Object.wait()
:
StringTesting st = new StringTesting();
synchronized (st) {
st.wait(5000);
}