在Executor.execute()中设置超时

时间:2013-09-06 05:18:04

标签: java java.util.concurrent

我需要按顺序执行任务:

Executor executor = Executors.newSingleThreadExecutor();

public void push(Runnable task) {
   executor.execute(task);
}

有时任务永远不会结束。我想设置一个超时,以防止它阻止下一个。

编辑:我需要一个“ fire and forget ”设计,因为我无法阻止此执行的调用者

1 个答案:

答案 0 :(得分:1)

这可以使用Future对象完成。

ExecutorService executor = Executors.newSingleThreadExecutor();

    Runnable task = new Runnable() {
        @Override
        public void run() {
            //do your task
        }
    };

    Future<?> future = executor.submit(task);

    future.get(60, TimeUnit.SECONDS); // awaits termination