`
zhuenwei
  • 浏览: 13023 次
文章分类
社区版块
存档分类
最新评论

Java启动定时任务

阅读更多
现在项目中需要开发一个定时任务,去清理指定目录下过期的文件,有几种实现定时器的方法定时器代码如下
方法一:
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);
    }
分享到:
评论

相关推荐

    java轻松实现—定时任务

    // 在Web应用启动时,创建并启动定时任务 Timer timer = new Timer(); TimerTask task = new MyTask(); // 自定义的定时任务 timer.schedule(task, 0, 60 * 1000); // 每60秒执行一次 } @Override public ...

    java quartz 定时任务

    Java Quartz 是一个强大的开源任务调度库,用于在Java应用程序中创建和管理定时任务。Quartz 提供了丰富的API,使得开发者能够灵活地定义任务,并精确控制任务的执行时间。本项目利用Quartz 实现了基于Cron表达式的...

    JAVA项目服务器启动时自启动指定的Servlet,并定时执行任务

    在Java Web开发中,我们经常需要在服务器启动时自动加载特定的Servlet,并让它们执行一些初始化操作或定时任务。这通常涉及到对Web应用的配置文件`web.xml`以及Servlet类本身的编程。以下将详细讲解如何实现这个功能...

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

    Java 定时任务,每天定时执行任务 Java 定时任务是指在 Java 语言中实现的定时执行任务的机制,通过使用 Timer 和 TimerTask 两个类,可以实现定时执行任务的功能。在这个例子中,我们将实现每天定时执行任务的功能...

    java定时任务的实现方式

    配置完成后,Spring容器会根据配置自动启动定时任务。 总结来说,Java定时任务的实现主要有两种常见途径:一是使用Java自带的`Timer`类,适合简单的定时需求,但不适用于复杂的调度场景;二是借助第三方库如Quartz...

    java定时任务调度

    Java定时任务调度是Java开发中常见的一种功能,用于在特定时间执行特定的任务,例如数据同步、日志清理、报表生成等。在Java中,有多种实现定时任务调度的方式,包括但不限于Java内置的`java.util.Timer`类、Spring...

    java定时任务quartz的基本实现

    Java定时任务在软件开发中扮演着重要角色,它允许开发者安排任务在特定时间执行,而无需持续监控。Quartz是Java领域中一个广泛使用的开源任务调度框架,它提供了丰富的功能来满足各种定时任务的需求。本篇文章将深入...

    Java定时执行任务的三种方法

    本文将详细介绍Java中三种常见的定时任务实现方式:`java.util.Timer`、`ServletContextListener`以及Spring框架中的`ScheduledTimerTask`。 1. **java.util.Timer** `java.util.Timer`类是最基础的定时任务工具,...

    java web定时任务 实例

    在Java Web应用中,为了使定时任务在服务器启动时自动运行,通常会将任务注入到一个Servlet容器初始化参数(如`ServletContextListener`)中。当Web应用加载时,监听器会启动任务。此外,Spring Boot提供了`@...

    java定时器定时调用任务

    在Servlet容器(如Tomcat)中,可以通过监听器(Listener)或者Servlet的初始化方法来创建和启动定时器,以实现在Web应用启动后自动开始执行定时任务。 此外,Java 5引入了`java.util.concurrent`包,其中的`...

    java定时任务

    在Java编程领域,定时任务是一项重要的功能,它允许开发者安排代码在特定的时间点或按照预设的周期自动执行。在给定的文件中,我们有两个关键的类:SimpleTriggerRunner.java和Jobtest.java,它们很可能是实现定时...

    Quartz--JAVA定时任务\Java应用:Java调度任务和Spring Quartz (1)

    Java定时任务是应用程序中不可或缺的一部分,它允许程序在特定时间执行特定操作,无需用户干预。在JDK 1.3及以后的版本中,`java.util.Timer`类提供了基础的定时任务支持。不过,`Timer`类的功能相对有限,无法精确...

    java 定时任务管理框架

    Java定时任务管理框架是开发中常见的一种工具,用于在特定时间执行特定任务,极大地提高了工作效率。Citic Scheduler作为这样一个框架,旨在简化Java项目中的定时任务管理。它提供了一个直观的用户界面,允许开发者...

    java 定时器任务timer 随tomcat启动而启动 同步启动

    我们通常写的timer都是用main方法写的定时器,但同样我们也需要根据服务器启动后定时器也启动的 定时执行任务。不过有个致命伤就是集群方面跟quartz不能比,此方法代码做参考不错,如果要用,那么这个方法在一台...

    java定时任务调度之Timer 简单示例

    Java定时任务调度是Java应用程序中常见的一种功能,用于在特定时间执行特定任务,例如定期备份、数据清理等。`Timer`类是Java中用于实现定时任务调度的一个基础工具,它位于`java.util`包中。在本文中,我们将深入...

    java线程定时启动

    此外,还有一个`MainTest`类,包含了`main`方法,用于启动定时任务。 ```java // PriTimerTask类继承自TimerTask public class PriTimerTask extends TimerTask { @Override public void run() { // 输出当前...

    java 定时任务写法

    ### Java定时任务实现方法:Quartz API 的应用与实践 #### 一、Quartz API简介 Quartz 是一个开源项目,提供了丰富的调度功能,适用于各种Java应用中的定时任务需求。它由Michael Lipton(mwlipton@us.ibm.com)等...

    Spring定时任务实现(非Web项目)

    3. **ThreadPoolTaskScheduler**:这是Spring提供的定时任务调度器,它可以基于Java的`ScheduledExecutorService`来执行周期性的任务。 4. **@Scheduled**:这是一个注解,用于标记需要定时执行的方法。 在非Web...

    Spring+Quartz 从数据库中获取定时任务和定时时间,动态实现对定时任务的增删改查

    4. **部署与测试**:项目部署在Tomcat服务器上,当服务器启动时,Quartz会自动加载数据库中的定时任务。通过监控日志或者定制的监控界面,可以观察到定时任务的执行情况,验证其是否按照预期工作。 5. **Spring的...

Global site tag (gtag.js) - Google Analytics