使用spring task每10分钟 确认时间如果到达对应时间执行对应操作
其实就是将时间点放到数据库 然后每个时间点都查
其实可以做优化变成每天查一次 放到内存里面需要了去拿
// 每30秒进行一次检查
@Scheduled(cron = "0/30 * * * * ?")
public void testSpringTask() {
Date date = new Date();
String nowHour = new SimpleDateFormat("HH:mm").format(date);
List<String> classTime = getClassTimeMin(date);
// 获取数据库的时间 如果达到对应的时间 进行操作
for (String s : classTime) {
String[] timeArr = s.split("-");
String endTime = timeArr[1];
if(nowHour.equals(endTime)) {
// 进行操作
System.out.println("清空登录情况");
classMap.clear();
}
}
}
每天或者每个小时查一次的优化 classTime声明在外面
@Autowired
private WebSocketTest webSocketTest;
@Scheduled(cron = "0/30 * * * * ?")
public void testSpringTask() {
Date date = new Date();
String nowHour = new SimpleDateFormat("HH:mm").format(date);
// List<String> classTime = getClassTimeMin(date); // 不每秒钟拿到一次了
if(classTime == null) return;
System.out.println("查看时间 " +Arrays.toString(classTime.toArray()));
for (String s : classTime) {
String[] timeArr = s.split("-");
String endTime = timeArr[1];
if(nowHour.equals(endTime)) {
System.out.println("清空登录情况");
webSocketTest.sendMessage("{\"msg\": \"timeover\"}");
classMap.clear();
}
}
}
@Scheduled(cron = "0 0 * * * ?")
@Override
public void getNewClassTimeList() {
// 每小时拿到一次日程表
System.out.println("测试看是否执行");
classTime = getClassTimeMin(new Date());
}