在项目中经常会用到执行定时任务,下面的两种是我在做项目的时候用到的两种
(1)spring task
在spring.xml中beans xmlns添加
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.2.xsd http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-3.0.xsd
<task:scheduled-tasks> <task:scheduled ref="timeTaskServiceImpl" method="task" cron="0 * 19 * * ?"/> </task:scheduled-tasks>
timeTaskServiceImpl 为你要执行的类,cron来定义您执行时间
(2)java自带的类 ScheduledExecutorService
首先我们先建一个工具类commontimer
package com.wonder.Util; import java.util.concurrent.Executors; import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.ScheduledFuture; import java.util.concurrent.TimeUnit; /** * 通用定时任务 */ public class CommonTimer { private final static ScheduledExecutorService scheduler; static { scheduler = Executors.newSingleThreadScheduledExecutor(); Runtime.getRuntime().addShutdownHook(new Thread() { @Override public void run() { // TODO Auto-generated method stub scheduler.shutdown(); } }); } private static CommonTimer instance = new CommonTimer(); private CommonTimer() { } public static CommonTimer getInstance() { return instance; } /** * 创建并执行在给定延迟后启用的 ScheduledFuture * * @param command * @param delay 秒 * @return */ public ScheduledFuture<?> scheduleWithSeconds(Runnable command, long delay) { return scheduler.schedule(command, delay, TimeUnit.SECONDS); } /** * 创建并执行在给定延迟后启用的 ScheduledFuture * * @param command * @param delay 毫秒 * @return */ public ScheduledFuture<?> scheduleWithMilliSeconds(Runnable command, long delay) { return scheduler.schedule(command, delay, TimeUnit.MILLISECONDS); } /** * 创建并执行一个在给定初始延迟后首次启用的定期操作,后续操作具有给定的周期;也就是将在 initialDelay 后开始执行,然后在 * initialDelay+period 后执行,接着在 initialDelay + 2 * period 后执行,依此类推。 * * @param command * @param delay 秒 * @param period 秒 * @return */ public ScheduledFuture<?> scheduleAtFixedRateWithSeconds(Runnable command, long delay, long period) { return scheduler.scheduleAtFixedRate(command, delay, period, TimeUnit.SECONDS); } /** * 创建并执行一个在给定初始延迟后首次启用的定期操作,后续操作具有给定的周期;也就是将在 initialDelay 后开始执行,然后在 * initialDelay+period 后执行,接着在 initialDelay + 2 * period 后执行,依此类推。 * * @param command * @param delay 毫秒 * @param period 毫秒 * @return */ public ScheduledFuture<?> scheduleAtFixedRateWithMilliSeconds(Runnable command, long delay, long period) { return scheduler.scheduleAtFixedRate(command, delay, period, TimeUnit.MILLISECONDS); } }
里面封装了几个定时执行的方法
然后建一个TimeTaskListener
import org.springframework.context.ApplicationListener; import org.springframework.context.event.ContextRefreshedEvent; import org.springframework.stereotype.Component; /** * Created by Guozhijie on 2016/9/20. */ @Component("timeTaskListener") public class TimeTaskListener implements ApplicationListener<ContextRefreshedEvent> { @Autowired TimeTaskService timeTaskService; @Override public void onApplicationEvent(ContextRefreshedEvent e){ CommonTimer.getInstance().scheduleAtFixedRateWithSeconds(timeTaskService,1,60*1); } }
实现了 spring的 applicationListener ,即为每次在启动项目的时候,在各个service类加载完成之后,开始执行
多说一句,applicationListener 这个类,很适合 在项目启动适合将一些缓存的数据加载出来
附:TimeTaskServiceImpl类
package com.wonder.provider; import com.wonder.exception.ServiceException; import com.wonder.service.TimeTaskService; import org.springframework.stereotype.Service; /** * Created by Guozhijie on 2016/9/20. */ @Service public class TimeTaskServiceImpl implements TimeTaskService, Runnable { public void task() throws ServiceException { try{ System.out.println("***********************111111"); }catch (Exception e){ throw e; } } public void run(){ task(); } }
相关推荐
Java 定时任务,每天定时执行任务 Java 定时任务是指在 Java 语言中实现的定时执行任务的机制,通过使用 Timer 和 TimerTask 两个类,可以实现定时执行任务的功能。在这个例子中,我们将实现每天定时执行任务的功能...
Java中的定时任务是软件开发中一个非常重要的功能,它允许我们按照预定的时间间隔执行特定的任务,比如数据备份、日志清理、系统监控等。在Java中,我们可以利用`java.util.Timer`类和`java.util.TimerTask`类来实现...
在Java Web开发中,我们经常需要在服务器启动时自动加载特定的Servlet,并让它们执行一些初始化操作或定时任务。这通常涉及到对Web应用的配置文件`web.xml`以及Servlet类本身的编程。以下将详细讲解如何实现这个功能...
`Timer`适合简单的定时任务,而`ScheduledExecutorService`更适合复杂的需求,如多线程环境和高并发场景。选择哪种方式取决于具体的应用场景和性能需求。在实际开发中,理解并熟练掌握这两种方法能帮助我们编写出...
Java定时执行任务是Java开发中常见的一种需求,用于在特定时间点或按照预设周期执行某段代码。在Java中,有两种主要的方式来实现定时任务:Java.util.Timer类和java.util.concurrent包下的ScheduledExecutorService...
通过配置数据库连接信息和要执行的sql语句,可实现定时执行多个sql语句。 所要执行的语句只能是写死的,可支持sqlserver mysql oracle。 配置说明: config/sys.properties 中指定数据库类型及连接信息,执行间隔...
总结起来,这个项目利用Quartz库和Cron表达式,为Java应用程序提供了一种强大而灵活的定时任务解决方案。开发者可以根据需求定义Cron表达式,创建各种复杂的调度策略,确保任务在正确的时间执行。通过深入理解Quartz...
要实现"spring+quartz整合,动态管理定时任务",首先需要在项目中引入Spring和Quartz的相关依赖。在Maven或Gradle的pom.xml或build.gradle文件中添加对应库的依赖。然后,我们需要配置Spring的ApplicationContext,...
`java.util.Timer`类是最基础的定时任务工具,它允许我们创建一个Timer对象并安排任务执行。在创建Timer实例后,通过`schedule`方法可以设置定时任务。例如: ```java Timer timer = new Timer(); timer....
Java定时任务的实现是软件开发中常见的需求,用于在特定时间执行特定的业务逻辑,例如数据备份、报表生成等。本文将详细介绍两种常用的Java定时任务实现方式:Timer类和Spring框架的Quartz调度器。 首先,第一种...
Java定时任务是应用程序中不可或缺的一部分,它允许程序在特定时间执行特定操作,无需用户干预。在JDK 1.3及以后的版本中,`java.util.Timer`类提供了基础的定时任务支持。不过,`Timer`类的功能相对有限,无法精确...
Java定时任务调度是Java开发中常见的一种功能,用于在特定时间执行特定的任务,例如数据同步、日志清理、报表生成等。在Java中,有多种实现定时任务调度的方式,包括但不限于Java内置的`java.util.Timer`类、Spring...
在Java编程环境中,实现每天定点...`java.util.Timer`和`ScheduledExecutorService`适合简单的定时任务,而Quartz更适合大型项目,需要更复杂的调度规则。在实际应用中,还需考虑线程安全、异常处理和资源关闭等问题。
Java定时任务在软件开发中扮演着重要角色,它允许开发者安排任务在特定时间执行,而无需持续监控。Quartz是Java领域中一个广泛使用的开源任务调度框架,它提供了丰富的功能来满足各种定时任务的需求。本篇文章将深入...
Java定时任务调度是Java开发中一个非常重要的技术领域,它允许开发者在特定的时间点或按照预定义的周期执行任务,从而实现自动化的工作流程。在Java中,我们可以使用多种方式来实现定时任务,如Java内置的`java.util...
Java中的定时任务与定时器是实现自动化操作的关键技术之一,特别是在需要周期性执行某些功能的场景下,如数据同步、日志清理、定时发送邮件等。本文将深入探讨如何使用Java标准库中的`java.util.Timer`和`java.util....
Java定时任务管理框架是开发中常见的一种工具,用于在特定时间...总之,Citic Scheduler作为一款Java定时任务管理框架,能够有效地提升项目中定时任务的管理水平,降低维护复杂性,是Java开发者值得考虑的工具之一。
Java定时执行多任务是软件开发中的常见需求,用于在特定时间点或按固定频率执行某项操作,例如数据同步、日志清理等。Java提供了一些内置的定时工具,如`java.util.Timer`和`java.util.concurrent....
在提供的压缩包文件"Time"中,可能包含的是示例代码或配置文件,用于演示如何在Java Web项目中设置和运行定时任务。具体实现可能包括Quartz的配置XML文件、Spring的配置类或带有`@Scheduled`注解的Java类。通过查看...