现在项目中需要开发一个定时任务,去清理指定目录下过期的文件,有几种实现定时器的方法定时器代码如下
方法一:
public class FileProcesser
{
private static Logger logger = Logger.getLogger(FileProcesser.class);
public static void start()
{
int startHour = 0;
int startMinute = 3;
// 读取配置文件中启动定时任务时间
String[] startTime = FileConfig.fileConfig.get(
FileConfig.START_CLEARFILE_TIME).split(":");
try
{
startHour = Integer.parseInt(startTime[0]);
startMinute = Integer.parseInt(startTime[1]);
}
catch (Exception e)
{
logger.error("get Config Info fail", e);
}
scheduleProcessFile(getDelay(startHour, startMinute), 86400000);
}
private static void scheduleProcessFile(long delay, long period)
{
try
{
ScheduledExecutorService ses = Executors
.newSingleThreadScheduledExecutor();
ses.scheduleAtFixedRate(new FileProcessTask(), delay, period,
TimeUnit.MILLISECONDS);
}
catch (Exception e)
{
logger.error("scheduleProcessFile Exception", e);
}
}
private static long getDelay(int hour, int minuts)
{
// 获得定时时间毫秒
Calendar sendCal = Calendar.getInstance();
sendCal.set(sendCal.get(Calendar.YEAR), sendCal.get(Calendar.MONTH),
sendCal.get(Calendar.DAY_OF_MONTH), hour, minuts);
long sendAtTime = sendCal.getTimeInMillis();
// 获得当前时间毫秒
Calendar now = Calendar.getInstance();
long newTime = now.getTimeInMillis();
// 如果过了定时时间,24小时后在处理
if (newTime > sendAtTime)
{
sendCal.set(sendCal.get(Calendar.YEAR),
sendCal.get(Calendar.MONTH), sendCal
.get(Calendar.DAY_OF_MONTH) + 1, hour, minuts);
sendAtTime = sendCal.getTimeInMillis();
}
long delayTime = sendAtTime - newTime;
return delayTime;
}
}
方法二:
private Timer timer= null;
private void start()
{
// 清除过期的定时器任务,每2个小时过期时间间隔检查一次容器
TimerTask task = new TimerTask()
{
@Override
public void run()
{
// 处理定时任务
}
};
timer= new Timer(true);
timer.schedule(task, 0, 1000 * 60 * 60 * 2);
}
分享到:
相关推荐
// 在Web应用启动时,创建并启动定时任务 Timer timer = new Timer(); TimerTask task = new MyTask(); // 自定义的定时任务 timer.schedule(task, 0, 60 * 1000); // 每60秒执行一次 } @Override public ...
Java Quartz 是一个强大的开源任务调度库,用于在Java应用程序中创建和管理定时任务。Quartz 提供了丰富的API,使得开发者能够灵活地定义任务,并精确控制任务的执行时间。本项目利用Quartz 实现了基于Cron表达式的...
在Java Web开发中,我们经常需要在服务器启动时自动加载特定的Servlet,并让它们执行一些初始化操作或定时任务。这通常涉及到对Web应用的配置文件`web.xml`以及Servlet类本身的编程。以下将详细讲解如何实现这个功能...
Java 定时任务,每天定时执行任务 Java 定时任务是指在 Java 语言中实现的定时执行任务的机制,通过使用 Timer 和 TimerTask 两个类,可以实现定时执行任务的功能。在这个例子中,我们将实现每天定时执行任务的功能...
配置完成后,Spring容器会根据配置自动启动定时任务。 总结来说,Java定时任务的实现主要有两种常见途径:一是使用Java自带的`Timer`类,适合简单的定时需求,但不适用于复杂的调度场景;二是借助第三方库如Quartz...
Java定时任务调度是Java开发中常见的一种功能,用于在特定时间执行特定的任务,例如数据同步、日志清理、报表生成等。在Java中,有多种实现定时任务调度的方式,包括但不限于Java内置的`java.util.Timer`类、Spring...
Java定时任务在软件开发中扮演着重要角色,它允许开发者安排任务在特定时间执行,而无需持续监控。Quartz是Java领域中一个广泛使用的开源任务调度框架,它提供了丰富的功能来满足各种定时任务的需求。本篇文章将深入...
本文将详细介绍Java中三种常见的定时任务实现方式:`java.util.Timer`、`ServletContextListener`以及Spring框架中的`ScheduledTimerTask`。 1. **java.util.Timer** `java.util.Timer`类是最基础的定时任务工具,...
在Java Web应用中,为了使定时任务在服务器启动时自动运行,通常会将任务注入到一个Servlet容器初始化参数(如`ServletContextListener`)中。当Web应用加载时,监听器会启动任务。此外,Spring Boot提供了`@...
在Servlet容器(如Tomcat)中,可以通过监听器(Listener)或者Servlet的初始化方法来创建和启动定时器,以实现在Web应用启动后自动开始执行定时任务。 此外,Java 5引入了`java.util.concurrent`包,其中的`...
在Java编程领域,定时任务是一项重要的功能,它允许开发者安排代码在特定的时间点或按照预设的周期自动执行。在给定的文件中,我们有两个关键的类:SimpleTriggerRunner.java和Jobtest.java,它们很可能是实现定时...
Java定时任务是应用程序中不可或缺的一部分,它允许程序在特定时间执行特定操作,无需用户干预。在JDK 1.3及以后的版本中,`java.util.Timer`类提供了基础的定时任务支持。不过,`Timer`类的功能相对有限,无法精确...
Java定时任务管理框架是开发中常见的一种工具,用于在特定时间执行特定任务,极大地提高了工作效率。Citic Scheduler作为这样一个框架,旨在简化Java项目中的定时任务管理。它提供了一个直观的用户界面,允许开发者...
我们通常写的timer都是用main方法写的定时器,但同样我们也需要根据服务器启动后定时器也启动的 定时执行任务。不过有个致命伤就是集群方面跟quartz不能比,此方法代码做参考不错,如果要用,那么这个方法在一台...
Java定时任务调度是Java应用程序中常见的一种功能,用于在特定时间执行特定任务,例如定期备份、数据清理等。`Timer`类是Java中用于实现定时任务调度的一个基础工具,它位于`java.util`包中。在本文中,我们将深入...
此外,还有一个`MainTest`类,包含了`main`方法,用于启动定时任务。 ```java // PriTimerTask类继承自TimerTask public class PriTimerTask extends TimerTask { @Override public void run() { // 输出当前...
### Java定时任务实现方法:Quartz API 的应用与实践 #### 一、Quartz API简介 Quartz 是一个开源项目,提供了丰富的调度功能,适用于各种Java应用中的定时任务需求。它由Michael Lipton(mwlipton@us.ibm.com)等...
3. **ThreadPoolTaskScheduler**:这是Spring提供的定时任务调度器,它可以基于Java的`ScheduledExecutorService`来执行周期性的任务。 4. **@Scheduled**:这是一个注解,用于标记需要定时执行的方法。 在非Web...
4. **部署与测试**:项目部署在Tomcat服务器上,当服务器启动时,Quartz会自动加载数据库中的定时任务。通过监控日志或者定制的监控界面,可以观察到定时任务的执行情况,验证其是否按照预期工作。 5. **Spring的...