El proyecto tiene un pequeño requisito simple, que es cambiar el estado del usuario que se probará a ausente después del final del tiempo de prueba, lo que se puede lograr usando TimerTask.La función de ejecutar tareas a intervalos regulares en Java utiliza principalmente las clases Timer y TimerTask. El temporizador se utiliza para ejecutar la tarea especificada de acuerdo con el cronograma especificado en un subproceso en segundo plano.
Agregue una tarea cronometrada al agregar un examen:
// Agregar tarea de ejecución (retraso de xxx segundos para ejecutar)
timer.schedule(timerTask,(timestamp-(epochSecond*1000)));
public void performTimerTask(Long timestamp,Long id){
long epochSecond = LocalDateTime.now().atZone(ZoneId.of("Asia/Shanghai")).toInstant().getEpochSecond();
TimerTask timerTask = new TimerTask() {
@Override
public void run() {
//获取参考人员记录列表,将待考修改为缺考
List<ExamRecordVo> examRecordVos=examRecordBiz.getExamRecordList(id);
for (int i = 0; i <examRecordVos.size() ; i++) {
//修改用户考试状态
ExamRecordVo recordVo = examRecordVos.get(i);
if(recordVo.getStatus()==ExamStatusEnum.WAIT.getCode()){//待考
ExamRecord examRecord =new ExamRecord();
examRecord.setId(recordVo.getRecordId());
examRecord.setStatus(ExamStatusEnum.ABSENT.getCode());//缺考
examRecordBiz.update(examRecord);
}
}
}
};
Timer timer = new Timer();
timer.schedule(timerTask,(timestamp-(epochSecond*1000)));
}