欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

定时器任务

程序员文章站 2022-06-09 09:17:17
...

1、引入支持定时任务的jar包

<!-- 定时调度(定时任务) -->
<dependency>
	<groupId>quartz</groupId>
	<artifactId>quartz</artifactId>
	<version>1.5.2</version>
</dependency>

2、原生定时

@Test
public void time() throws Exception {
	// 定时器
	Timer timer = new Timer();
	// 开启定时任务(子线程)
	timer.schedule(new TimerTask() {
		@Override
		public void run() {
			System.out.println(new Date().toLocaleString());
		}
	}, 0, 1000);// 0:立即执行,1000:间隔1秒
	// 让主线程处于运行状态
	Thread.sleep(5000);
}

3、使用OpenSymphony Quartz 任务调度

点击进入【在线Cron表达式生成】

3.1 定时器的配置文件

<!--引入定时器配置-->
<import resource="classpath:applicationContext-timer.xml"/>

定时器配置

<?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: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/task http://www.springframework.org/schema/task/spring-task.xsd">


    <!-- cron表达式:在每天早上8点到晚上8点期间每1分钟触发一次 -->
    <!--value>0 0/1 8-20 * * ?</value -->
    <!-- cron表达式:每5分钟触发一次 -->
    <!-- <value>0 0/5 * * * ?</value> -->

    <task:scheduled-tasks>
        <!-- 执行workService里面的work方法,执行频率是cron表达式 -->
        <!--每周每月每小时的50,51分每秒执行-->
        <task:scheduled ref="workService" method="work" cron="0 50,51 * * * ? " />
    </task:scheduled-tasks>
</beans>

3.2 效果

定时器任务

import com.yyw.aisell.service.IWorkServie;
import org.springframework.stereotype.Service;

@Service("workService") //自定义定时器配置的名字(不写默认就是类型首字母小写)
public class WorkServiceImpl implements IWorkServie {
    @Override
    public void work() {
        System.out.println("定时器执行");
    }
}