Time定时器
1、在应用开发中,经常需要一些周期性的操作,比如每5分钟执行某一操作等。对于这样的操作最方便、高效的实现方式就是使用java.util.Timer工具类。
private java.util.Timer timer;
timer = new Timer(true);
timer.schedule(
new java.util.TimerTask() { public voidrun() { //server.checkNewMail(); 要操作的方法 } }, 0,5*60*1000);
第一个参数是要操作的方法,第二个参数是要设定延迟的时间,第三个参数是周期的设定,每隔多长时间执行该操作。
使用这几行代码之后,Timer本身会每隔5分钟调用一遍server.checkNewMail()方法,不需要自己启动线程。Timer本身也是多线程同步的,多个线程可以共用一个Timer,不需要外部的同步代码。
2、
(1)Timer.schedule(TimerTask task,Date time)安排在制定的时间执行指定的任务。
(2)Timer.schedule(TimerTask task,DatefirstTime ,long period)安排指定的任务在指定的时间开始进行重复的固定延迟执行.
(3)Timer.schedule(TimerTask task,longdelay)安排在指定延迟后执行指定的任务.
(4)Timer.schedule(TimerTask task,longdelay,long period)安排指定的任务从指定的延迟后开始进行重复的固定延迟执行.
(5)Timer.scheduleAtFixedRate(TimerTasktask,Date firstTime,long period)安排指定的任务在指定的时间开始进行重复的固定速率执行.
(6)Timer.scheduleAtFixedRate(TimerTasktask,long delay,long period)安排指定的任务在指定的延迟后开始进行重复的固定速率执行.
Scheduler定时器
首先添加所需要的类包:quartz-1.5.2.jar,quartz-all-1.5.2.jar,quartz-jboss-1.5.2.jar
//设置定时作业
public voidstartScheduler(HttpServletRequest requests)throws SchedulerException{
try{
//建立作业调度器
Scheduler scheduler =StdSchedulerFactory.getDefaultScheduler();
//判断作业调度内是否有作业,如果有将其删除
if(!scheduler.isShutdown()) {
scheduler.deleteJob("ReceiveOnTimed", Scheduler.DEFAULT_GROUP);
}
//删除调度器的作业后,新建一个我们现在要完成的作业,该作业所需要的类是ReceiveJobd.class,作业名字是ReceiveOnTimes,所属分组是Scheduler.DEFAULT_GROUP
JobDetail jobDetail = new JobDetail("ReceiveOnTimed",
Scheduler.DEFAULT_GROUP,
ReceiveJobd.class);
int m = ips.length;
int n = tablenames.length;
//向作业内设置要传入的参数
jobDetail.getJobDataMap().put("scheduler", scheduler);
jobDetail.getJobDataMap().put("ipLength", m);
jobDetail.getJobDataMap().put("tablenameLength", n);
jobDetail.getJobDataMap().put("wcx",wc);
for (int i = 0; i < m; i++) {
jobDetail.getJobDataMap().put("ip" + i, ips[i]);
for (int j = 0; j < n; j++) {
jobDetail.getJobDataMap().put("tablename" + j, tablenames[j]);
}
}
//建立触发器,判断何时触发该作业,参数为触发器的名称,触发器分组,作业名称,作业分组,时间设定
Trigger trigger = new CronTrigger("ReceiverOnTimeTriggerd",
scheduler.DEFAULT_GROUP,
"ReceiveOnTimed",
scheduler.DEFAULT_GROUP, time);
//将作业和触发器添加到调度器
scheduler.scheduleJob(jobDetail, trigger);
//按照设置开始调度
scheduler.start();
}catch(Exception e){
e.printStackTrace();
}
}
具体作业类的处理:
packagecom.bodhiya.schsystem.business;
import org.quartz.Job;
import org.quartz.JobDataMap;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.quartz.Scheduler;
import org.springframework.web.context.WebApplicationContext;
public class ReceiveJobd implements Job{
public void ReceiveJobd(){
}
//作业具体实现的功能
public voidexecute(JobExecutionContext context) throws
JobExecutionException {
try {
//建立JobDataMap对象,用来接收传递的参数
JobDataMap dataMap = context.getMergedJobDataMap();
int ipLength = dataMap.getInt("ipLength");
int tablenameLength = dataMap.getInt("tablenameLength");
WebApplicationContext wc=(WebApplicationContext)dataMap.get("wcx");
String ip = "";
String tablename = "";
for (int i = 0; i < ipLength; i++) {
ip = dataMap.getString("ip" + i);
for (int j = 0; j < tablenameLength; j++) {
tablename = dataMap.getString("tablename" + j);
ExchangeAccess ea=new ExchangeAccess(ip,tablename,wc);
//启动线程
ea.start();
}
}
Scheduler scheduler = (Scheduler) dataMap.get("scheduler");
scheduler.deleteJob("ReceiveOnTimed", Scheduler.DEFAULT_GROUP);
} catch (Exception ex) {
ex.printStackTrace();
}
}
}
一、java自带的 Timer
示例
class-1
import javax.servlet.ServletContextListener;
import java.util.Timer;
import javax.servlet.ServletContextEvent;
public class MyListener implements ServletContextListener {
private Timer timer = null;
public void contextInitialized(ServletContextEvent event) {
timer = new Timer(true);
timer.schedule(new MyTask(), 0, 1000*10);
}
public void contextDestroyed(ServletContextEvent event) {
timer.cancel();
}
}
class-2
import java.util.TimerTask;
public class MyTask extends TimerTask{
public MyTask() {
System.out.println("new timer "+System.currentTimeMillis());
}
public void run(){
System.out.println(" timer is running ,time is "+System.currentTimeMillis());
}
}
配置
<listener>
<listener-class>MyListener</listener-class>
</listener>
二、开源
quartz
相关推荐
C8051F340 TIMER2定时器中断
自己写的java timer控件定时器详解(附详细代码),已通过调试并运行。
java_Timer定时器实例_Spring实例
java Timer定时器实例 Spring实例.doc java Timer定时器实例 Spring实例.doc
java 定时器(Timer) java 定时器(Timer) java 定时器(Timer)
Timer java定时器
java多线程定时器
vc 定时器 Timer 多媒体定时器 毫秒 ms
java定时器,timer类操作详解 java定时器,timer类操作详解
c8051f340 TIMER0定时器中断,通过定时器达到所需的功能
Jdk的Timer 实现定时器,本例代码包括Handler 发送消息的简单实现过程 定时器 Timer,在这里演示一个进度条不断更新
NULL 博文链接:https://love-66521.iteye.com/blog/1674900
一个很简单的java定时器,很适合初学者呢,希望能够给你一点的提示哦
Java定时器Timer简述.pdf
c8051f340 TIMER0定时器中断,通过中断程序来实现功能
timer示例demo(java)
NULL 博文链接:https://jiangnanlove.iteye.com/blog/1958648
NULL 博文链接:https://675990021.iteye.com/blog/2265945
GD32F330 Timer定时器中断功能使用
VS2019 Timer定时器例程