<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz</artifactId>
<version>2.3.0</version>
</dependency>
<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz-jobs</artifactId>
<version>2.3.0</version>
</dependency>
<!--spring依赖-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
<version>5.0.2.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>5.0.8.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
<version>5.0.2.RELEASE</version>
</dependency>
import org.springframework.stereotype.Component;
import java.text.SimpleDateFormat;
import java.util.Date;
@Component
public class MyJob {
private static final SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
public void abc(){
System.out.println(Thread.currentThread()+ ":" + sdf.format(new Date()));
}
}
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
<!-- 注册任务类到spring容器 -->
<context:component-scan base-package="com.demo.job"/>
<!-- 任务策略 -->
<bean id="jobDetail" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<!--spring中注册的任务对象-->
<property name="targetObject" ref="myJob "/>
<!--任务对象中要执行哪个方法-->
<property name="targetMethod" value="abc"/>
<!-- 并发 concurrent=false 单线程
true: 在规定的周期内任务没完成时,又触发新的任务,属于同一任务时。使用多线程来处理任务
-->
<property name="concurrent" value="true"/>
</bean>
<!-- 触发器 绑定回调 -->
<bean id="trigger" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
<!-- cron表达式: 秒 分 时 日 月 周 年(省略) -->
<!-- 两秒触发一次 -->
<property name="cronExpression" value="0/2 * * * * ?"/>
<property name="jobDetail" ref="jobDetail"/>
</bean>
<!-- 调度容器 时机到时触发触发器 -->
<bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers">
<list>
<!--可装载多个触发器-->
<ref bean="trigger"/>
</list>
</property>
</bean>
</beans>
public class JobApplication {
public static void main(String[] args) throws IOException {
new ClassPathXmlApplicationContext("classpath:applicationContext-jobs.xml");
// 阻塞
System.in.read();
}
}
@Component
public class MyJob2 {
private static final SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
/**
* initialDelay: 启动时延迟多少毫秒后才执行
* fixedDelay: 每间隔多长时间执行
*/
@Scheduled(initialDelay = 1000,fixedDelay = 2000)
//@Scheduled(cron = "0/2 * * * * ?")
public void tt(){
System.out.println("job2:" + sdf.format(new Date()));
}
}
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:task="http://www.springframework.org/schema/task"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task.xsd">
<!-- 注册任务类到spring容器 -->
<context:component-scan base-package="com.demo.job"/>
<!--注解支持:使用的约束是spring-task-->
<task:annotation-driven/>
<!--任务调度线程池-->
<bean class="org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler"/>
</beans>
原文:https://www.cnblogs.com/bdsbdg/p/14252392.html