Как реализовать цикличный таймер?
Как лучше реализовать таймер? Я пишу некое подобие аукциона и мне нужен таймер, который будет каждые 5 секунду реализовывать проверку лота сравнивая Date endTime лота c new Date(System.currentTimeMillis()). Мол если время совпадает то запускается метод который делает CRUD операции в БД. Используеться spring boot,jpa,sql,thymleaf,web. Я сделал что-то типо такого метода ,а потом в мейн создал таймер вкинул в него этот метод и поставил 0,чтобы он выполнялся сразу и в цикле. Я НУБ.
@Component
@Transactional
public class LotTimer {
@Autowired
private JpaLotRepository jpaLotRepository;
@Autowired
private JpaBetRepository jpaBetRepository;
public void task() {
List<Lot> lots = jpaLotRepository.findAll();
for (Lot l : lots) {
if (l.getEnd().equals(new Date(System.currentTimeMillis()))) {
jpaBetRepository.deleteAllByLotId(l.getId());
jpaLotRepository.deleteById(l.getId());
}
}
}
}
Затем я сделал так
@SpringBootApplication
public class AuctionApp {
public static void main(String[] args) {
ConfigurableApplicationContext applicationContext = SpringApplication.run(SpringWebConfiguration.class);
ProgramMenu programMenu = applicationContext.getBean(ProgramMenu.class);
LotTimer lotTimer = new LotTimer();
while (true) {
programMenu.printAuctionMenu();
int menuNumber = programMenu.getMenuNumberFromUser();
programMenu.executeSelectedMenuItem(menuNumber);
Timer timer = new Timer();
TimerTask timerTask = new TimerTask() {
@Override
public void run() {
lotTimer.task();
}
};
timer.schedule(timerTask,0);
}
}
}