0
以下代码片段从JMenuItem的ActionListener中调用。它只是启动一个jar文件。重新计划ScheduledExecutorService
ScheduledExecutorService schedulerExecutor = Executors.newScheduledThreadPool(2);
Callable<Process> callable = new Callable<Process>() {
@Override
public Process call() throws Exception {
Process p = Runtime.getRuntime().exec("cmd /c start java -jar D:\\MovieLibrary.jar");
return p;
}
};
FutureTask<Process> futureTask = new FutureTask<Process>(callable);
schedulerExecutor.submit(futureTask);
schedulerExecutor.shutdown();
System.exit(0);
但问题是,它只执行一次。不重复。这意味着Process p = Runtime.getRuntime().exec("cmd /c start java -jar D:\\MovieLibrary.jar");
不会被第二次调用。
我该怎么做才对?
任何建议是可观的。提前致谢。
感谢您的回复。没有肯定newScheduledThreadPool(2)不会使它运行两次。我所理解的是它会使任务使用两个线程。此外,我试图提交两次或更多次的任务,但没有奏效。实际上,JMenuItem自己重新启动应用程序。但它只重启一次。 :( – 2012-02-22 09:53:13
如果你尝试从控制台手动运行MovieLibrary,你可以运行两次吗? – 2012-02-22 09:57:02
不,它只执行一次,如果我从eclipse运行它然后运行两次 – 2012-02-22 09:59:31