我已经编写了一个在Mac上运行的简单程序,该程序将打开一个excel文件,并等待用户关闭该文件,然后给出简单的输出。当我运行程序时,excel会打开,而proc.waitfor会被忽略,它会跳过输出而无需等待,任何帮助
谢谢
Thread myThread = new Thread() {
@Override
public void run() {
try {
String userDir = (System.getProperty("user.home"));
String fileName = userDir + "/Desktop/test/testfile.xlsx";
File theFile = new File(fileName);
Process proc = new ProcessBuilder("/usr/bin/open", fileName).start();
int waitFor = proc.waitFor();
} catch (InterruptedException ex) {
Logger.getLogger(MacTester.class.getName()).log(Level.SEVERE, null, ex);
} catch (IOException ex) {
Logger.getLogger(MacTester.class.getName()).log(Level.SEVERE, null, ex);
}
}
};
myThread.start();
System.out.println("excel is now closed");
最佳答案
这行:System.out.println("excel is now closed");
应该在run方法里面。在调用start之后,主线程(正在启动其他线程的线程)将继续执行。
另一种选择是放置:myThread.join();
上一行之后:myThread.start();