重新安排ScheduledExecutorService

时间:2012-02-22 09:40:42

标签: java concurrency

从JMenuItem的ActionListener调用以下代码。只需启动一个jar文件。

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");

我怎样才能做到正确?

任何建议都值得注意。提前谢谢。

1 个答案:

答案 0 :(得分:1)

newScheduledThreadPool(2)并不意味着该线程运行两次。 它是游泳池的大小。 如果你想第二次运行它,请“提交”两次任务。

schedulerExecutor.submit(futureTask);
schedulerExecutor.submit(futureTask);