Как реализовать цикличный таймер?

Как лучше реализовать таймер? Я пишу некое подобие аукциона и мне нужен таймер, который будет каждые 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);

        }

    }


}

Ответы (0 шт):