Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/325.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java ScheduledExecutorService的重新调度_Java_Concurrency - Fatal编程技术网

Java ScheduledExecutorService的重新调度

Java ScheduledExecutorService的重新调度,java,concurrency,Java,Concurrency,下面的代码段是从JMenuItem的ActionListener调用的。只需启动一个jar文件 ScheduledExecutorService schedulerExecutor = Executors.newScheduledThreadPool(2); Callable<Process> callable = new Callable<Process>() { @Override public Process call() throws Excep

下面的代码段是从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);
ScheduledExecutorService schedulerExecutor=Executors.newScheduledThreadPool(2);
Callable Callable=new Callable(){
@凌驾
公共进程调用()引发异常{
进程p=Runtime.getRuntime().exec(“cmd/c start java-jar D:\\MovieLibrary.jar”);
返回p;
}
};
FutureTask FutureTask=新的FutureTask(可调用);
ScheduleExecutor.submit(未来任务);
schedulerExecutor.shutdown();
系统出口(0);
但问题是,这只是执行一次。不重复。这意味着进程p=Runtime.getRuntime().exec(“cmd/cstartjava-jard:\\MovieLibrary.jar”)不会被第二次调用

schedulerExecutor.submit(futureTask);
schedulerExecutor.submit(futureTask);
我怎样才能走到右边


任何建议都是可以接受的。提前感谢。

newScheduledThreadPool(2)并不意味着线程运行两次。 这是游泳池的大小。 如果要再次运行任务,请将其“提交”两次

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

谢谢你的回复。不,newScheduledThreadPool(2)不会使其运行两次。据我所知,使用两个线程将使任务变得复杂。我也试过两次或多次提交任务,但都没有成功。实际上,JMenuItem会自行重新启动应用程序。但它只重新启动了一次(如果您试图从控制台手动运行MovieLibrary,是否可以运行两次?不,它只执行一次。如果我从eclipse运行它,它将运行两次。如果您无法使用“java-jar D:\\MovieLibrary.jar”从控制台运行两次MovieLibrary),然后还有另一个问题?可能它侦听的端口无法绑定两次或类似的内容。我真的很抱歉。我犯了一个错误,编写了新代码并构建了它,但忘了用新构建替换D:\\MovieLibrary。无论如何,感谢您的帮助。:)