每天变化的定任务实现 想法

使用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();
            }
        }
    }

spring task的使用

每天或者每个小时查一次的优化 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());
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值