【发布时间】:2021-01-12 15:18:05
【问题描述】:
我有一个将元素添加到集合的服务类,并且有一个计划的作业方法每 2 秒执行一次,它读取添加到集合中的所有元素(服务添加元素的那个),最后,它清除了整个集合。
如果在我从集合中读取数据之间或在完成从集合中读取数据之后到清除集合之前的时间之间添加了某些元素,我会感到困惑,那么该元素将丢失。
如何确保在计划作业未完成时没有元素被添加到集合中?
EventService.java
public void foo(){
eventSet.add(new Event("event description"));
}
EventJob.java
@Autowired
EventService eventService;
@Scheduled(cron = "${cron.expression.for.every.2.second}")
private void job(){
for(Event event : eventService.getEventSet()){
//process event
System.out.println(event);
}
eventService.getEventSet().clear();
}
【问题讨论】:
标签: java spring multithreading spring-boot