关于scheduler:使用ScheduledExecutorService实现延时任务延时发布视频
应用ScheduledExecutorService能够实现定时工作(例如定时公布的性能) 先在类中定义局部变量 ScheduledExecutorService service = Executors.newScheduledThreadPool(50);Executors.newScheduledThreadPool(50); 此处应用了工厂模式。 工厂模式次要是为创建对象提供过渡接口,以便将创建对象的具体过程屏蔽隔离起来,达到进步灵活性的目标。 @PostMapping("/ops/scheduled/publish") public ResponseResult scheduledPublish(@RequestBody ScheduleVideoDto dto) { List<Integer> vids = dto.getVids(); if (vids.isEmpty()){ return ResponseResult.of().withErrorMessage("公布视频失败,请抉择视频进行公布"); } Date pushTime = dto.getPushTime(); if (pushTime==null){ return ResponseResult.of().withErrorMessage("公布视频失败,请从新抉择公布工夫"); } for (int i = 0; i< vids.size();i++){ int status = videoService.getStatusById(vids.get(i)); if (status==1) vids.remove(vids.get(i)); } if (vids.isEmpty()){ return ResponseResult.of().withErrorMessage("公布视频失败,所选视频均为已公布"); } long delay = pushTime.getTime() - System.currentTimeMillis(); vids.forEach(vid->{ videoService.updatePushTime(vid,pushTime); service.schedule(() -> videoService.publish(vid), delay, TimeUnit.MILLISECONDS); }); return ResponseResult.of(); }在接口传入的dto中传入公布工夫PushTime ...