`
ren2881971
  • 浏览: 109975 次
社区版块
存档分类
最新评论

java定时器例子

阅读更多
package com.jit.util;

import java.io.IOException;

import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class KQServlet extends HttpServlet {

	private static final long serialVersionUID = 1L;

	public KQServlet() {
		super();
	}

	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {

	}

	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {
		doGet(req, resp);
	}

	@Override
	public void destroy() {
		super.destroy();
	}

	@Override
	public void init() throws ServletException {
		// 启动定时器
		System.out.println("启动定时器");
		String hour = (String) this.getServletConfig().getInitParameter("Time");
		new KQTaskManager(hour);
	}

}

package com.jit.util;

import java.util.Calendar;
import java.util.Date;
import java.util.Timer;

public class KQTaskManager {
	private static final long PERIOD_DAY = 1000 * 60*60*24;

	public KQTaskManager(String hour) {
		Calendar cal = Calendar.getInstance();
		cal.set(Calendar.HOUR_OF_DAY, Integer.valueOf(hour));
		cal.set(Calendar.MINUTE, 0);
		cal.set(Calendar.SECOND, 0);
		Date date = cal.getTime();
		// 如果第一次执行定时任务的时间 小于 当前的时间
		// 此时要在 第一次执行定时任务的时间 加一天,以便此任务在下个时间点执行。如果不加一天,任务会立即执行
		if (date.before(new Date())) {
			date = this.addDay(date, 1);
		}
		Timer timer = new Timer();
		// 将任务实例化
		KQTask task = new KQTask();
		// 将任务装载到任务调度中
		System.out.println("将任务装载到任务调度中!!");
		timer.schedule(task, date, PERIOD_DAY);
	}

	// 增加减少天数
	public Date addDay(Date date, int num) {
		Calendar cal = Calendar.getInstance();
		cal.setTime(date);
		cal.add(Calendar.DAY_OF_MONTH, num);
		return cal.getTime();
	}
}
package com.jit.util;

import java.util.List;
import java.util.TimerTask;

import jit.wau.dbbean.UpdateDB;


import org.apache.log4j.Logger;

public class KQTask extends TimerTask {
	private static Logger log = Logger.getLogger(KQTask.class);
	private UpdateDB dbbean;
	private UpdateDB dbbean_kq;

	// private static final String dataSourceOTA = "java:comp/env/OTA";
	private KQGetDataSource source = new KQGetDataSource();

	/*
	 * run方式是定时器的主要实现方法 里面需要执行每天对考勤数据的查询和数据的插入
	 */
	@Override
	public void run() {
		// 每个任务都需要初始化dbbean 再将dbbean清理掉
		System.out.println("定时器开始工作!!!!");
		dbbean = source.getDBean(KQDataSource.SOURCE_OTA);
		dbbean_kq = source.getDBean(KQDataSource.SOURCE_KQDS);

		try {
			KQDataSelect select = new KQDataSelect(dbbean, dbbean_kq);
			List<KQDep> kqdepList = select.getKQInfo();
			if (kqdepList != null) {
				System.out.println("考勤部门数据查询成功!!!!!!!!!");
			}
			KQDataInsert insert = new KQDataInsert(dbbean, dbbean_kq);
			int flag = insert.insertKQInfo(kqdepList);
			if (flag > 0) {
				System.out.println("考勤部门数据插入成功!!!!!!!!!!!");
				dbbean.commitToDB();
			} else {
				dbbean.rollBackDB();
			}
		} catch (Exception e) {
			e.printStackTrace();
			dbbean.cleanUp();
			dbbean_kq.cleanUp();
		} finally {
			dbbean.cleanUp();
			dbbean_kq.cleanUp();
		}
		System.out.println("定时器结束工作!!!!");
	}

	public KQTask() {

	}

}
分享到:
评论

相关推荐

    java web定时器例子

    Java Web定时器主要指的是在Java Web应用程序中实现定时任务的功能,这在许多业务场景中都是必要的,例如数据备份、报表生成、邮件发送等。在Java中,我们可以利用内置的`java.util.Timer`类或者Spring框架的`@...

    Java定时器例子_动力节点Java学院整理

    Timer类是用来执行任务的类,它接受一个TimerTask做参数 ,这两个类使用起来非常方便,可以完成我们对定时器的绝大多数需求 。Timer有两种执行任务的模式,最常用的是schedule,它可以以两种方式执行任务:

    Java定时器

    ### Java定时器:掌握时间的艺术 #### 一、引言 在软件开发中,定时执行特定任务是一项常见的需求。无论是定期清理缓存、发送提醒邮件还是执行后台数据同步,都需要一种机制来确保任务能在预设的时间点或周期性...

    java 定时器(Timer)

    Java定时器(Timer)是Java Swing库中的一个类,它提供了调度任务在未来某个时间执行的能力。这个类主要用于在GUI应用程序中实现定时触发某些操作,比如更新界面、执行动画或者执行周期性的后台任务。Timer类结合了...

    java定时器.rar

    Java定时器(Timer)是Java语言中用于调度任务的一个重要工具,它可以帮助我们在特定时间执行一次或重复执行某个任务。这个“java定时器.rar”压缩包可能包含了关于如何使用Java定时器的相关示例代码和教程。 Java...

    Java创建定时器.rar

    这个例子中,程序会绘制数字的Canvas对象,并通过定时器更新显示的数字,同时使用了生成随机数的For循环,综合运用了多种Java编程技巧。 首先,我们来了解Java中的定时器类`java.util.Timer`和`java.util.TimerTask...

    java定时器结合spring

    Java定时器结合Spring框架可以创建灵活且可扩展的定时任务,这种技术在许多企业级应用中非常常见,用于执行周期性的后台任务,如数据清理、报告生成或服务调用等。下面将详细介绍如何在Spring中集成Java定时器,并...

    Java定时器.pdf

    Java定时器框架主要由`java.util.Timer`和`java.util.TimerTask`组成,这两个类提供了在Java中安排一次性或重复性任务的能力。然而,这个框架存在一定的局限性,例如无法直接处理夏令时变化导致的时间跳跃问题,对于...

    spring和java定时器

    Spring框架和Java内置的定时器提供了两种不同的方式来实现这样的功能。 首先,我们来看Spring定时器。Spring使用的是Quartz库来实现定时任务管理。在给出的例子中,可以看到配置文件中定义了几个关键的bean: 1. `...

    spring java 定时器 执行两次 quartz

    在这个例子中,`cronExpression`定义了任务的执行频率,`targetObject`和`targetMethod`指定了任务执行的具体对象和方法。 当遇到Spring定时器执行两次的问题时,可能的原因有以下几点: 1. **多实例问题**:如果...

    java定时器的实现

    ### Java定时器的实现 #### 一、概述 在Java编程中,定时执行特定任务是一种常见的需求。例如,定期清理缓存、定时发送邮件或执行数据同步等操作。Java提供了多种方式来实现定时任务,其中之一就是利用内置的`java...

    JAVA定时器word文档

    总结一下,Java定时器(java.util.Timer)和TimerTask配合使用,可以方便地实现定时执行任务的需求。通过结合Servlet监听器,我们可以确保定时器在Web应用启动时启动,并在应用关闭时停止,确保任务的生命周期与Web...

    JAVA定时器,POI

    Java定时器(Timer)是Java标准库中提供的一种任务调度工具,它允许程序员安排在未来某个时间点或定期执行任务。这个API包含`java.util.Timer`类和`java.util.TimerTask`类,它们协同工作来实现定时执行的任务。使用...

    java Timer定时器实例 Spring实例.doc

    【Java Timer定时器】 在Java中,`java.util.Timer` 类是用于调度任务的类,它可以在特定的时间点或者按照设定的周期执行某项任务。`Timer` 类提供了两种计划任务的方法:`schedule(TimerTask task, long delay)` ...

    Java定时器在Web中的应用.doc

    Java定时器在Web应用中的实现主要涉及到`java.util.Timer`类和`ServletContextListener`接口,它们在Spring、Struts、Hibernate等框架环境下同样适用。本文将详细解释如何使用这两个核心组件来实现在Web环境中定时...

    java定时器

    Java定时器是Java编程语言中用于执行定时任务的关键组件,主要通过`java.util.Timer`类和`java.util.TimerTask`类来实现。Spring MVC框架,作为Spring框架的一部分,提供了更高级且灵活的方式来管理定时任务,这使得...

    Java定时器[定义].pdf

    Java定时器是Java标准库中的一个实用工具,用于在特定时间执行预定任务。它主要由`java.util.Timer`和`java.util.TimerTask`类组成,这两个类为开发者提供了简单的时间调度功能。在Java 1.3之前,创建自定义调度程序...

    java在服务启动的时候启动定时器

    Java在服务启动时启动定时器是一项常见的需求,用于执行定期任务,例如数据同步、日志清理、健康检查等。在Java中,我们可以使用多种库来实现这个功能,其中最常用的两个是`java.util.Timer`和`java.util.concurrent...

Global site tag (gtag.js) - Google Analytics