java Timer示例

①监听类
public class TimerListener implements ServletContextListener {
    private Timer timer = null;

    public void contextInitialized(ServletContextEvent event) {
        // 时间类
        Calendar startDate = Calendar.getInstance();
        long timeInterval = 1000 *60;
        //设置开始执行的时间为 某年-某月-某月 00:00:00
        //00:00:30准时更新之前提交了,没有开始出库的计划到今天计划中。
        startDate.set(startDate.get(Calendar.YEAR), startDate.get(Calendar.MONTH), startDate.get(Calendar.DATE), 10, 43, 30);
        timer = new Timer(true);
        event.getServletContext().log("定时器已启动");
        timer.scheduleAtFixedRate(new Task(), startDate.getTime(),timeInterval); // 每小时执行一次run方法    测试5秒5 * 1000
    }

    public void contextDestroyed(ServletContextEvent event) {
        if (timer != null) {
            timer.cancel();
            event.getServletContext().log("定时器销毁");
        }
    }
}


②实现逻辑类
public class Task extends TimerTask {


    private static boolean isRunning = false;


    public void run() {


        if (!isRunning) {
            isRunning = true;


            log.info("开始");
            long start = System.currentTimeMillis();
int i=20;
while(i<10){
 i=i-1;
}
            log.info("结束");
            long end = System.currentTimeMillis();
            System.out.println("运行时间:" + (end - start) + "毫秒");
            isRunning = false;


        } else {
            log.info("上一次任务执行还未结束,本次任务不能执行。");
        }


    }
}

③web配置监听
<!--timer-->
<listener>
  <listener-class>cn.services.timer.TimerListener</listener-class>
</listener>



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值