JAVA Web 定时任务

本文介绍使用Quartz实现定时任务,在每天18:30和22:00统计未登录系统的用户数量,并通过SQL查询当天登录用户总数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

要求:

  • 每天18:30,22:00 分别统计一次当天未登录系统人数

环境及相关包

  • JDK 6
  • quartz-2.2.2.jar

启动web时,加载定时触发器

import java.util.Date;

import org.quartz.CronScheduleBuilder;  
import org.quartz.CronTrigger;
import org.quartz.DateBuilder;
import org.quartz.JobBuilder;
import org.quartz.JobDetail;
import org.quartz.Scheduler;
import org.quartz.SchedulerFactory;
import org.quartz.SimpleTrigger;
import org.quartz.TriggerBuilder;
import org.quartz.impl.StdSchedulerFactory;

import com.fs.job.DoCountLoginusersJob;
import com.fs.task.SystemLoadException;
import com.fs.task.SystemLoadImp;



public class LoadUserLoginCount extends SystemLoadImp{

    @Override
    public boolean load() throws SystemLoadException {
        //*TODO Auto-generated method stub
        Date startTime = DateBuilder.nextGivenSecondDate(null, 15);
        String job_name ="countloginusers";  
        try {  

            SchedulerFactory factory = new StdSchedulerFactory();  
            Scheduler sched = factory.getScheduler(); 

            //*任务1,18点30分统计一次登录人数
            JobDetail job = JobBuilder.newJob(DoCountLoginusersJob.class)
                    .withIdentity(job_name, "group1830")
                    .build();
            CronTrigger trigger = (CronTrigger)TriggerBuilder.newTrigger()
                    .withIdentity("trigger1830", "group1830")
                    .withSchedule(CronScheduleBuilder.cronSchedule("0 30 18 * * ?"))
                    .build();

            sched.scheduleJob(job, trigger);

            //*任务2,22点00分统计一次登录人数
            JobDetail job2 = JobBuilder.newJob(DoCountLoginusersJob.class)
                    .withIdentity(job_name,"goup2200")
                    .build();
            CronTrigger trigger2 = (CronTrigger)TriggerBuilder.newTrigger()
                    .withIdentity("trigger2200", "group2200")
                    .withSchedule(CronScheduleBuilder.cronSchedule("0 0 22 * * ?"))
                    .build();

            sched.scheduleJob(job2,trigger2);

            sched.start();

        }  catch (Exception e) {  
            e.printStackTrace();  
        }  
        return true;
    }

}

统计登录人数

    @Select({
        "SELECT COUNT(*) ",
        "FROM `system_user`", 
        "WHERE ",
        "TO_DAYS(fieldt) = TO_DAYS(NOW())"
    })
    /***
     * 获取截止目前登陆人数
     * @return 
     */
    int countUserLogin();
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值