将volatile状态引入单例bean是否可以接受?

时间:2014-03-07 10:23:57

标签: java spring stateless stateful

我想创建适当的无状态服务,即具有单例范围的bean,但有时候状态很小。我工作的应用程序中的当前候选者是

  • 缓存数据
  • 保留Future s用于计划任务,以便以后能够按需取消

Future的简化示例服务可能是

class SchedulingService {
  @Autowired
  TaskScheduler scheduler;

  Map<String, ScheduledFuture> scheduledEvents = new HashMap<>();

  public void scheduleTask(String id, MyTask task) {
    if (scheduledEvents.containsKey(id)) {
      scheduledEvents.remove(id).cancel(false);
    }
    persistTask(task)
    scheduledEvents.put(id, scheduler.schedule(task, task.createTrigger()));
  }

  void persistTask(MyTask task) { /* persist logic here */ }
}

我确信这些要求会一直弹出。由于应该保存在内存中的数据不必保留,因为它只是从数据库中的数据派生的信息,因此以这种方式保持状态是否可接受?如果不是,有更好的方法吗?

0 个答案:

没有答案