zoukankan      html  css  js  c++  java
  • 使用java自带的times实现定时任务

    timer

    即jdk里面提供的java.util.Timer和java.util.TimerTask两个类.

    其中TimerTask表示具体的任务,而Timer调度任务.

    简单的例子如下:

    import java.util.Timer;
    import java.util.TimerTask;
    
    public class TimerTest extends TimerTask {
    
        private String jobName = "";
    
        public TimerTest(String jobName) {
            super();
            this.jobName = jobName;
        }
    
        @Override
        public void run() {
            System.out.println("execute " + jobName);
        }
    
        public static void main(String[] args) {
            Timer timer = new Timer();
            long delay1 = 1 * 1000;
            long period1 = 1000;
            // 从现在开始 1 秒钟之后,每隔 1 秒钟执行一次 job1
            timer.schedule(new TimerTest("job1"), delay1, period1);
            long delay2 = 2 * 1000;
            long period2 = 2000;
            // 从现在开始 2 秒钟之后,每隔 2 秒钟执行一次 job2
            timer.schedule(new TimerTest("job2"), delay2, period2);
        }
    }

    当然在生产环境中Timer是不建议使用了的. 它在多线程的环境下, 会存在一定的问题:

    1. 当一个线程抛出异常时,整个timer都会停止运行.例如上面的job1抛出异常的话, 
    job2也不会再跑了.
    2. 当一个线程里面处理的时间非常长的话, 会影响其他job的调度. 
    例如, 如果job1处理的时间要60秒的话, 那么job2就变成了60秒跑一次了.
    复制代码

    基于上面的原因, timer现在一般都不会再使用了.

    原文链接:https://juejin.im/post/6844904002606350343
  • 相关阅读:
    监控 SQL Server 的运行状况
    软件开发报价的计算方法
    PHP 正则表达式
    ObjectiveC编程语言简介
    iframe 自适应高度,无限级父框架
    分享iphone开发的好网站,希望大家也能提供一些分享下
    实战WebService I: XMLPRC篇(基于php)
    PHPPRC
    Objective C cocos2D场景切换方式总汇
    NoSQL数据存储引擎
  • 原文地址:https://www.cnblogs.com/uzxin/p/13679307.html
Copyright © 2011-2022 走看看