-1

这是我的问题:

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

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

4

1 回答 1

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

于 2013-10-08T01:28:02.133 回答