Java Web添加定时任务实例代码

定时任务时间控制类

/**
 * 定时任务时间控制
 * 
 * @author liming
 *
 */
public class TimerManager {

	// 时间间隔
	private static final long PERIOD_DAY = 24 * 60 * 60 * 1000;

	public TimerManager() {
		Calendar calendar = Calendar.getInstance();

		/*** 定制每日00:00执行方法 ***/

		calendar.set(Calendar.HOUR_OF_DAY, 0);
		calendar.set(Calendar.MINUTE, 0);
		calendar.set(Calendar.SECOND, 0);

		Date date = calendar.getTime(); //执行定时任务的时间
		// 在启动服务器时如果第一次执行定时任务的时间小于当前的时间任务会立即执行。
		// 因此为了防止重启服务器造成任务重复执行,需要将执行定时任务的时间修改为第二天。
		if (date.before(new Date())) {
			date = this.addDay(date, 1);
		}

		Timer timer = new Timer();

		DailyDataTimerTask task = new DailyDataTimerTask();
		// 任务执行间隔。
		timer.schedule(task, date, PERIOD_DAY);
	}

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

定时任务操作主体类

/**
 * 定时任务操作主体
 * 
 * @author liming
 *
 */
public class DailyDataTimerTask extends TimerTask {

	private static Logger log = Logger.getLogger(DailyDataTimerTask.class);

	@Override
	public void run() {
		try {
			//在这里写你要执行的内容
			System.out.println("come in DailyDataTimerTask");

			
		} catch (Exception e) {
			log.info("-------------解析信息发生异常--------------");
		}
	}
}

定时任务监听器

/**
 * 定时任务监听器
 * 
 * @author liming
 *
 */

public class DailyDataTaskListener implements ServletContextListener {

	public void contextInitialized(ServletContextEvent event) {
		new TimerManager();
	}

	public void contextDestroyed(ServletContextEvent event) {
	}

}

web.xml添加监听器

<!--加载每日数据更新定时任务文件-->
	<listener>
        <listener-class>
            com.honsto.web.job.DailyDataTaskListener
        </listener-class>
    </listener>




  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java分布式定时任务可以通过使用Quartz框架来实现。Quartz是一个功能强大且灵活的开源作业调度库,可以用于在Java应用程序中创建和管理定时任务。 要在分布式环境中使用Quartz,可以采用以下步骤: 1. 配置Quartz集群:在分布式环境中,多个应用程序实例可能同时执行相同的定时任务。为了避免重复调度和冲突,需要配置一个Quartz集群。这可以通过将Quartz实例连接到共享的数据库或使用Terracotta等内存网格来实现。 2. 创建定时任务:使用Quartz提供的API,可以创建不同类型的定时任务,如简单触发器(SimpleTrigger)或Cron触发器(CronTrigger)。定时任务可以指定执行时间、重复次数、触发条件等。 3. 配置调度器:在每个应用程序实例中,需要配置一个调度器(Scheduler)来管理定时任务。调度器负责启动、暂停、恢复和停止定时任务的执行。 4. 启动调度器:在应用程序启动时,需要启动调度器以开始执行定时任务。可以通过调用调度器的start方法来实现。 5. 监控和管理:Quartz提供了一些管理和监控工具,可以用于查看和管理正在运行的定时任务。可以使用Quartz的API或使用Quartz提供的web界面来实现。 需要注意的是,在分布式环境中,需要确保定时任务在不同的应用程序实例之间进行正确的负载均衡。可以使用调度器的集群功能或其他负载均衡机制来实现。 希望以上信息对你有所帮助!如有任何问题,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值