依赖的jar包
JavaTimer (原生的方式)
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;
public class JavaTimer {
//做一个小计时器
//模拟每天晚上 给所有同学发送短信(邮件)
public static void main(String[] args) throws ParseException {
System.out.println("准备做坏事儿啦~~~");
//用来存储用户的名字 手机号 邮箱。。。
//最好创建一个集合(随时扩容)
String[] userArray = {"博哥","艾薇","语晴","Andy","Ella","Doris"};
ArrayList<String> userList = new ArrayList(Arrays.asList(userArray));
//每天晚上凌晨2点 发送垃圾短信
//需要处理一下自己定义的时间
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd kk:mm:ss");
//可以将自定义第一个字符串格式 转化为Date 数据库中的to_date('值','格式')函数
Date firstTime = sdf.parse("2020-05-25 15:38:30");
//可以找一个计时器对象来帮我们倒计时 时间到了就做事
Timer timer = new Timer();
//让timer帮我们做事情
timer.schedule(new TimerTask(){
@Override
public void run() {//最终的任务
for(String user : userList){
System.out.println("给"+user+"发送一条信息:[阿拓老师很帅!!!]");
}
}
},firstTime,3000);
}
}
基于spring的timer
SpringTask
import java.util.ArrayList;
/**
* 可以理解为是刚才的那个Task
* 类中只有一个具体的事情(任务)
* 没有timer帮我们做倒计时
*/
public class SpringTask {
private ArrayList<String> userList = new ArrayList();
{
userList.add("博哥");
userList.add("艾薇");
userList.add("语晴");
userList.add("Andy");
userList.add("Ella");
userList.add("Doris");
}
//具体的事情(刚才那个任务的方法)
public void doSomething(){
for(String user : userList){
System.out.println("给"+user+"发送一条信息:[阿拓老师很帅!!!]");
}
}
}
TestMain
import org.springframework.beans.factory.BeanFactory;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class TestMain {
public static void main(String[] args) {
BeanFactory factory = new ClassPathXmlApplicationContext("ApplicationContext.xml");
}
}
ApplicationContext.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"
xsi:schemaLocation="http://www.springframework.org/schema/beans
https://www.springframework.org/schema/beans/spring-beans.xsd">
<!-- 刚才我们自己定义的那个任务类 交给Spring来管理 -->
<bean id="springTask" class="springtimer.SpringTask"></bean>
<!-- 创建一个spring提供好的计时器对象 用来做倒计时管控(可以理解为刚才的Timer对象) detail细节 详述 -->
<!-- quartz-2.3.2.jar spring-context-support.jar -->
<bean id="jobDetail" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<property name="targetObject" ref="springTask"/>
<property name="targetMethod" value="doSomething"/>
</bean>
<!-- 创建一个spring提供的触发器对象 一旦上面的目标对象及方法确定 触发器就开始进行实践的计算及循环 -->
<bean id="cronTrigger" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
<property name="jobDetail" ref="jobDetail"/>
<property name="cronExpression" value="30/5 17 16 * * ?"/>
</bean>
<!-- 将我们设置好的触发器对象 放置在一个Spring管理的集合对象中 SchedulerFactoryBean -->
<bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers">
<list>
<ref bean="cronTrigger"/>
</list>
</property>
</bean>
</beans>
网友评论