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这个时间使得任务运行。

原文地址:https://www.cnblogs.com/iCanhua/p/8419912.html

时间: 2024-10-09 05:35:52

Timer和时间调度的相关文章

Python3.x:简单时间调度Timer(间隔时间执行)

Python3.x:简单时间调度Timer(间隔时间执行) 代码: import threading import time def fun_timer(): print('hello timer') global timer #重复构造定时器 timer = threading.Timer(5.8,fun_timer) timer.start() #定时调度 timer = threading.Timer(2,fun_timer) timer.start() # 50秒后停止定时器 time.

Arrays类和Timer类(定时调度)

Timer类是一种线程设施,可以用来实现在某一个时间或某一段时间后安排某一个任务执行一次或定期重复执行.该功能要与TimerTask配合使用.TimerTask类用来实现由Timer安排的一次或重复执行的某一任务. 每一个Timer对象对应的是一个线程,因此计时器所执行的任务应该迅速完成,否则可能会延迟后续任务的执行. TimerTask类是一个抽象类,如果要使用该类,需要自己建立一个类来继承此类,并实现其中的抽象方法. TimerTask的子类: // 完成具体的任务操作 import jav

八、mysql视图、存储过程、函数以及时间调度器

1.create or replace view emp_view as select * from t4 ;给t4表创建一个名为emp_view的视图 2.drop view emp_view 删除视图 ======================================= 1.创建一个存储过程(查询所有数据) create procedure p1 () READS SQL DATA BEGIN select * from t4; END 2.创建一个存储过程(查询传参数据) cre

C# 通过System.Timers.Timer获取时间

1 public delegate void timeDelegate();// Timer获取时间 2 3 private void Form1_Load(object sender, EventArgs e) 4 { 5 System.Timers.Timer t = new System.Timers.Timer(1000); //设置时间间隔为5秒 6 t.Elapsed += new System.Timers.ElapsedEventHandler(Timer_TimesUp); 7

你的程序支持复杂的时间调度嘛?如约而来的 java 版本

你的程序支持复杂的时间调度嘛? 这篇文章介绍了时间适配器的c#版本,是给客户端用的,服务器自然也要有一套对应的做法,java版本的 [年][月][日][星期][时间] [*][*][*][*][*] 这样利于分割,配置,清晰. 然后就是验证,时间在不在配置的时间开发内? 当然想到的*肯定是默认支持所有的 [2015][7][*][*][10:00-11:59] 这个格式,表示2015年的7月每一天的10点到12点为配置开启时间 [2015][7-9][*][*][10:00-11:59] 这个格

利用缓存、Timer间隔时间发送微信的实例,很有用的例子

//Class WechatOfferExcutor 此类为微信触发类,属于上层调用类,其中有用到用静态变量缓存offer信息,Task异步执行发送方法等 using Newtonsoft.Json.Linq;using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Text.RegularExpressions;using System.Threading.Tas

你的程序支持复杂的时间调度嘛?

时隔两个月了,这段时间,游戏筹备正式上线,根据游戏平台数据反馈,反响还不错. 但是牵涉出新问题,就是活动.活动功能本身很简单.问题就在于,时间配置上,什么时间段开发活动. 配置多种多样.比如,没做星期2,4,6活动.每周的周六,周日,活动.指定月份和日期的活动.配置简直是天花乱坠了...这尼玛怎么搞???? 那么有么有万能的配置方式呢?首先,我能想到的配置肯定是字符串格式的. 必须包含,年月日星期时间,这尼玛不就犯难了嘛????我们C#的 DateTime 类型格式化只支持年月日,时分秒啊.星期

java Timer(定时调用、实现固定时间执行)

最近需要用到定时调用的功能.可以通过java的Timer类来进行定时调用,下面是有关Timer的一些相关知识. 其实就Timer来讲就是一个调度器,而TimerTask呢只是一个实现了run方法的一个类,而具体的TimerTask需要由你自己来实现,例如这样: Timer timer = new Timer(); timer.schedule(new TimerTask() { public void run() { System.out.println("11232"); } },

Linux时间子系统(六) POSIX timer

一.前言 在用户空间接口函数文档中,我们描述了和POSIX timer相关的操作,主要包括创建一个timer.设定timer.获取timer的状态.获取timer overrun的信息.删除timer.本文将沿着这些用户空间的接口定义来看看内核态的实现.虽然POSIX timer可以基于各种不同的clock创建,本文主要描述real time clock相关的timer. 本文第二章描述了POSIX timer的基本原理,第三章描述系统调用的具体实现,第四章主要讲real time clock的