JAVAutil。并发无法取消可运行Java
我想在5秒钟后取消我的两项任务,但下面的代码不起作用。出于某种原因,如果我不提交这两个任务并注释掉取消命令,我会得到“程序已完成…”5秒后打印的线条。如果我提交上面的两个任务,这行永远不会打印出来,任务永远不会停止
ScheduledExecutorService exec = (ScheduledExecutorService) Executors.newScheduledThreadPool(2);
Future<?> res1 = exec.submit(p);
Future<?> res2 = exec.submit(c);
exec.schedule(new Runnable(){
public void run(){
res1.cancel(true);
res2.cancel(true);
System.out.println("Program has finished execution after 5s.");
}
}, 5, TimeUnit.SECONDS);
//task code
public void run() {
while(true){
if (Thread.currentThread().isInterrupted()) return;
try{
//do stuff
...
System.out.println("Doing stuff");
}
catch (InterruptedException e){
e.printStackTrace();
return;
}
}
}
我试过exec。我们也在等待终止协议,但它不起作用
共 (0) 个答案