如何在一分钟后从 TRUE 更改为 FALSE?

dcm*_*m50 0 java spring-boot

我正在开发一个用于投票的 API。我有一个方法可以启动投票会话,并且会话应该开放 1 分钟,然后在一段时间后关闭。
关闭会话意味着我必须将方法更改setIsSessionOpenFALSE.
当会话开放时,用户应该能够投票。在我的SessionVote对象内部有两个代表投票的字段(votedYes两个votedNo字段都将存储每个投票的计数)。

这是我到目前为止所做的,它是在服务类中:

    public SessionVote openSession(String agendaSubject, Integer sessionId){
        SessionVote sessionVote = findBySessionVoteId(sessionId);
        Optional<Agenda> agenda = getAgendaBySubject(agendaSubject);
        if (agenda.isPresent()) {
            sessionVote.setAgenda(agenda.get());
            sessionVote.setIsSessionOpen(true);
            sessionVote.setStartedTime(System.currentTimeMillis());
            LOGGER.info("The session ID {} is opened and started at {}. The subject for voting is: {}", sessionVote.getSessionVoteId(), sessionVote.getStartedTime(), sessionVote.getAgenda().getSubject());
            return sessionVote;
        } else {
            LOGGER.error("No subject was found");
            throw new NoSubjectFoundException(Constants.NO_SUBJECT_FOUND);
        }
    }
Run Code Online (Sandbox Code Playgroud)

我省略了一些代码,以便更清晰、更容易理解我的问题,但如果有必要,我可以添加更多信息。

Ell*_*sch 5

除非我遗漏了什么,否则一分钟后开始Timer调用。setIsSessionOpen(false)

Timer t = new Timer();
TimerTask tt = new TimerTask() {
    @Override
    public void run() {
        sessionVote.setIsSessionOpen(false);
    }
};
t.schedule(tt, TimeUnit.MINUTES.toMillis(1));
Run Code Online (Sandbox Code Playgroud)