java – ScheduledExecutorService – 检查计划任务是否已完成

我有一个服务器端应用程序,客户端可以请求重新加载配置.如果客户端请求重新加载配置,则不应立即执行此操作,但延迟时间为1分钟.如果另一个客户端也请求在同一分钟重新加载配置,则应忽略此请求.

我的想法是使用ScheduledExecutorService安排任务,如:

 ScheduledExecutorService service = Executors.newSingleThreadScheduledExecutor();
 service.schedule(new LoadConfigurationTask(), 1, TimeUnit.MINUTES);

 public class LoadConfigurationTask Runnable {
    public void run() {
      // LoadConfiguration
    }
 }

如何检查LoadConfigurationTask是否已被调度但尚未执行,以便能够忽略进一步的请求,直到重新加载配置为止?

最简单的方法就是设置AtomicBoolean http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/atomic/AtomicBoolean.html

在启动任务时将其设置为true,在任务完成时将其设置为false,除非处于false状态,否则不再启动任务.

确保在finally块中将设置设置为false,这样您就不会在不取消设置的情况下意外退出.

https://stackoverflow.com/questions/21442322/scheduledexecutorservice-check-if-scheduled-task-has-already-been-completed

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:java – ScheduledExecutorService – 检查计划任务是否已完成