java.util.Timer定时器,实际上是个线程,定时调度所拥有的TimerTasks。
一个TimerTask实际上就是一个拥有run方法的类,需要定时执行的代码放到run方法体内,TimerTask一般是以匿名类的方式创建。

java.util.Timer timer = new java.util.Timer(true); // true 说明这个timer以daemon方式运行(优先级低, 程序结束timer也自动结束),注意,javax.swing 包中也有一个Timer类,如果import中用到swing包,要注意名字的冲突。 

TimerTask task = new TimerTask() {    public void run() {      ... //每次需要执行的代码放到这里面。    } }; 

//以下是几种调度task的方法: 

timer.schedule(task, time); // time为Date类型:在指定时间执行一次。 

timer.schedule(task, firstTime, period); // firstTime为Date类型,period为long // 从firstTime时刻开始,每隔period毫秒执行一次。 

timer.schedule(task, delay) // delay 为long类型:从现在起过delay毫秒执行一次 

timer.schedule(task, delay, period) // delay为long,period为long:从现在起过delay毫秒以后,每隔period毫秒执行一次。 

java.util.Timer timer = new java.util.Timer(true); // true 说明这个timer以daemon方式运行(优先级低, 程序结束timer也自动结束),注意,javax.swing包中也有一个Timer类,如果import中用到swing包,要注意名字的冲突。 

TimerTask task = new TimerTask() {    public void run() {      ... //每次需要执行的代码放到这里面。    } }; 

//以下是几种调度task的方法: 

timer.schedule(task, time); // time为Date类型:在指定时间执行一次。 

timer.schedule(task, firstTime, period); // firstTime为Date类型,period为long // 从firstTime时刻开始,每隔period毫秒执行一次。 

timer.schedule(task, delay) // delay 为long类型:从现在起过delay毫秒执行一次。 

timer.schedule(task, delay, period) // delay为long,period为long:从现在起过delay毫秒以后,每隔period毫秒执行一次。

依据Java自身提供的接口实现,通过监听器(Listener)和定时器(Timer)定时执行某个任务(Task)。
专业的开源工具可参考Quartz:http://www.opensymphony.com/quartz/
[size=large][b]Java Web版[/b][/size]
MyListener:

import java.util.Timer;import javax.servlet.ServletContextEvent;import javax.servlet.ServletContextListener;

public class MyListener implements ServletContextListener {  private Timer timer = null;  public void contextInitialized(ServletContextEvent event) {    timer = new Timer(true);//true设置定时器为守护线程,当此程序只剩下守护线程时,JVM退出    //设置任务计划,启动和间隔时间    timer.schedule(new MyTask(), 0, 86400000);  }

  public void contextDestroyed(ServletContextEvent event) {    timer.cancel();  }

}

MyTask:

import java.util.TimerTask;public class MyTask extends TimerTask {  public void run() {    // System.out.println("call at " + (new Date()));    // TODO 此处添加具体任务代码  }

}

web.xml配置:

<listener>    <listener-class>com.fastunit.samples.listener.MyListener</listener-class></listener>

[size=large][b]Java版[/b][/size]
下面是一个完整的例子,由两个类组成,一个定制任务,一个调用java.util.Timer

定制任务:

import java.util.TimerTask;

public class TimeTask extends TimerTask { @Override    public void run() {       System.out.println("running");  }}

调用java.util.Timer:
本例中将定时任务设定为守护线程,马上开始执行,每个1000ms重复执行,5s后主线程结束,由于是守护线程,故随着主线程的结束,定时任务也结束。

import java.util.Timer;

public class TimerTest {  public static void main(String[] args) {      Timer timer = new Timer(true);       timer.schedule(new TimeTask(), 0,1000);       try {         Thread.sleep(5000);       } catch (InterruptedException e) {            e.printStackTrace();      } }}

Java定时任务的实现相关推荐

  1. java定时任务,每天定时执行任务

    java定时任务,每天定时执行任务.以下是这个例子的全部代码. public class TimerManager {//时间间隔private static final long PERIOD_DA ...

  2. java定时任务框架elasticjob详解

    这篇文章主要介绍了java定时任务框架elasticjob详解,Elastic-Job是ddframe中dd-job的作业模块中分离出来的分布式弹性作业框架.该项目基于成熟的开源产品Quartz和Zo ...

  3. Springboot2 Quartz实现JAVA定时任务的动态配置

    动态配置Quartz.没接触过定时任务的同学可以先看下此篇:JAVA定时任务实现的几种方式 文章目录 一.需求背景 1. 问题现象 2. 问题分析 3. 解决方案 二.需求背景 2.1. maven依 ...

  4. Java定时任务解决方案

    Java定时任务解决方案 参考文章: (1)Java定时任务解决方案 (2)https://www.cnblogs.com/zhixiang-org-cn/p/9490877.html (3)http ...

  5. Java定时任务(一) Timer及TimerTask的案例解析及源码分析

    Java定时任务(一)  Timer及TimerTask的案例解析及源码分析 一.概述: 定时任务这个概念在Java的学习以及项目的开发中并不陌生,应用场景也是多种多样.比如我们会注意到12306网站 ...

  6. JAVA定时任务的简单实现

    Java定时任务的简单实现 2011-01-02 18:34:43|  分类: 软件开发 |  标签:void  timer  import  param  dateutil   |字号大中小 订阅 ...

  7. Java定时任务技术分析

    <从零打造项目>系列文章 工具 比MyBatis Generator更强大的代码生成器 ORM框架选型 SpringBoot项目基础设施搭建 SpringBoot集成Mybatis项目实操 ...

  8. Java 定时任务详解

    文章目录 单机定时任务技术选型 Timer ScheduledExecutorService Spring Task 时间轮 分布式定时任务技术选型 Quartz Elastic-Job XXL-JO ...

  9. Java定时任务手工触发-使用Arthas

    1. 前言 在测试环境经常需要手工触发Java应用中的定时任务,如果定时任务没有使用Quartz,Java应用中也没有提供其他方法手工触发定时任务,可以使用Arthas快速实现以上目的. 以下使用Ar ...

  10. JAVA定时任务时间配置

    JAVA定时任务时间配置 每个位置配置解释 参数说明 通配符说明 常用示例 每个位置配置解释 秒 分 时 日 月 周 年* * * * * * * 参数说明 序号 说明 是否必填 允许填写的值 允许的 ...

最新文章

  1. 指定某行复制多次的方法
  2. 图像分割综述:FCN、U-Net、PSPNet、DeepLab
  3. Java虚拟机:垃圾回收机制与垃圾收集器
  4. Elastic Search学习笔记5——基本操作
  5. 推荐:Java性能优化系列集锦
  6. 使用ssh tunnel 来做代理或跳板
  7. 正式踏入24岁了……
  8. TikZ绘图示例——尺规作图: 圆内接正五边形的近似画法
  9. Mask-Predict: Parallel Decoding of Conditional Masked Language Models
  10. 【Rollo的Python之路】比较运算符
  11. 1031 查验身份证 (15 分) python
  12. 1月第3周易盾业务风控关注 | 2020年全国受理网络违法和不良信息举报1.63亿件
  13. 格里高利历java_Java 日历笔记
  14. 32位和64位操作系统与System,System32,Syswow64的区别
  15. 典型2R机械臂结构分析 2R-manipulator Geometric Modeling
  16. LLVM IR 语法
  17. [转载]我如何在计算机视觉顶级会议CVPR上发表论文?
  18. 【通信电子电路】第11章 交流电路功率分析
  19. 【一起来学Java】继承,多态,抽象,接口
  20. 十八、Stream 流

热门文章

  1. 蓝桥杯单片机第十届省赛题程序实现
  2. DCT变换和DFT变换
  3. 更好地提问ChatGPT_常用prompt表
  4. Word文档标题设置,一级文字,二级及以下为数字
  5. 钉钉OA流程审批,Jenkins自动授权通知用户密码
  6. 关于书籍“Composing Programs”1.6.3自定义函数的嵌套定义与非嵌套定义的比较
  7. HMI-7-[高分屏支持]:Qt 适配高分屏
  8. 用递归和非递归求斐波那契数列
  9. 嘻哈说:设计模式之单一职责原则
  10. Linux基础bash命令