Java usa TimerTask para ejecutar una tarea programada

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)));
    }

Supongo que te gusta

Origin blog.csdn.net/weixin_39709134/article/details/126524750
Recomendado
Clasificación