有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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) 个答案