zoukankan      html  css  js  c++  java
  • Timer和时间调度

      Timer作为JDK提供的util工具,不太适合作为周期调度任务,只适合简单的定时操作(按照一定时间频率出发任务),在java的领域解决方案中,Quartz无疑是翘楚。

      Timer的调度方法有:

    public void schedule(TimerTask task, long delay) {
    if (delay < 0)
    throw new IllegalArgumentException("Negative delay.");
    sched(task, System.currentTimeMillis()+delay, 0);
    }  
    public void schedule(TimerTask task, Date time) {
    sched(task, time.getTime(), 0);
    }
      
      等一些主要以时间间隔为主的任务,另外大家不要误会第二个构造方法有什么特别,其实内部也是通过计算出和现在的间隔毫秒数为主的调度,用到的原理也很简单,维护一个queue的实现了TimerTask的任务队列,然后通过轮询mainloop方法,不断执行其中的任务,而执行方式熟悉并发的同学都知道,用的是Object的wait(long millionseconds)方法。

      因此结论:不要试图更改系统时间接近Date time这个时间使得任务运行。
  • 相关阅读:
    WinDbg 图形界面功能(一)
    WinDbg的安装、配置和功能
    windbg调试托管代码 .Net clr
    win32线程栈溢出问题 (二)
    win32线程栈溢出问题 (一)
    WinDbg常用命令系列---查看线程调用栈命令K*简介
    BCD码
    Intel 80386 CPU
    Intel 80286 CPU
    Intel 8086 CPU
  • 原文地址:https://www.cnblogs.com/iCanhua/p/8419912.html
Copyright © 2011-2022 走看看