- 在开始之前先将application.yml的配置贴出来
server:
cor1: 0/10 * * * * ?
port: 8080
spring:
mail:
default-encoding: UTF-8
host: smtp.qq.com
username: 193@qq.com
password: jrbgfi
protocol: smtp
@SpringBootApplication
@EnableScheduling
@EnableAsync
public class AsyncTestApplication {
public static void main(String[] args) {
SpringApplication.run(AsyncTestApplication.class, args);
}
}
定时任务
private static Boolean isStart = false;
@Value("${server.cor1}")
private String corn1;
@Autowired
private ThreadPoolTaskScheduler threadPoolTaskScheduler;
@Autowired
private SendMail sendMail;
private ScheduledFuture future;
@GetMapping("/start")
public String start() {
System.out.println("正在开启定时任务");
if (future != null)
future.cancel(true);
future = threadPoolTaskScheduler.schedule(new MyRunnable(),
triggerContext -> new CronTrigger(corn1).nextExecutionTime(triggerContext));
isStart = true;
System.out.println("=====定时任务开启成功=====");
return "定时任务开启成功";
}
@GetMapping("/statu")
public boolean status() {
return isStart;
}
@GetMapping("/stop")
public String stop() {
if (future != null)
future.cancel(true);
System.out.println("=====定时任务正在关闭=====");
isStart = false;
return "定时任务已关闭";
}
@GetMapping("/modify")
public String modify(String cornString) {
this.stop();
this.corn1 = cornString;
this.start();
System.out.println("成功修改定时任务的运行周期");
return "已成功修改定时任务的运行周期";
}
public class MyRunnable implements Runnable {
private int count = 0;
@Override
public void run() {
System.out.println("任务被执行了" + count++ + "次: " + new SimpleDateFormat("yyyy年MM月dd日HH 时mm分ss秒").format(new Date()));
}
}
异步任务
@Async
public void test() {
try {
Thread.sleep(500);
} catch (InterruptedException e) {
e.printStackTrace();
}
String name = Thread.currentThread().getName();
System.out.println("异步任务执行成功当前线程为:" + name);
}
邮件任务
public void send(String address) throws MessagingException {
MimeMessage mimeMailMessage = javaMailSender.createMimeMessage();
MimeMessageHelper messageHelper = new MimeMessageHelper(mimeMailMessage);
messageHelper.setSubject("这是一个测试标题");
messageHelper.setFrom("193@qq.com");
messageHelper.setTo("do3@163.com");
messageHelper.setText("<h>用来测试的邮件<h>" +
"<br><span style: color=red>hello world<span>", true);
javaMailSender.send(messageHelper.getMimeMessage());
}