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
  • 相关阅读:
    Vue 页面权限控制和登陆验证
    Vue 动态添加路由及生成菜单
    开发一个简单的 Vue 弹窗组件
    VS使用和错误收集
    ARP欺骗的实现
    虚拟机安装64位系统(Windows Server 2008R2 Datacenter版本)
    Kali安装问题
    HTML5学习之四:多媒体播放
    HTML5学习之三:文件与拖放
    HTML5学习之二:HTML5中的表单2
  • 原文地址:https://www.cnblogs.com/uzxin/p/13679307.html
Copyright © 2011-2022 走看看