如何使用ExecutorService实现条件任务?

时间:2013-10-08 01:00:44

标签: java timer

这是我的问题:

  

我有一个带返回值的任务,我想定期调用该任务,直到返回值为null。

我应该如何使用ExecutorService?感谢。

1 个答案:

答案 0 :(得分:0)

        ScheduledExecutorService executorService = Executors.newScheduledThreadPool(1);
    executorService.scheduleAtFixedRate(new Runnable() {
        private final ExecutorService executor = Executors.newSingleThreadExecutor();
        private Future<?> lastExecution;

        @Override
        public void run() {
            //Make sure only one task is running
            if (lastExecution != null && !lastExecution.isDone()) {
                return;
            }
            //Do your task here
            Object ret = doTask();
            if (ret == null) {
                executorService.shutdown();
            }
        }
    }, 0, 3, TimeUnit.MINUTES);

请检查javadoc,可能是错误的

http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/ExecutorService.html

相关问题