定时任务-异步任务-邮件任务

  • 在开始之前先将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;

    /**
     * 开启定时任务
     *
     * @return
     */
    @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 "定时任务开启成功";
    }

    
    /**
     * 查看定时任务的状态
     * @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) {
//        if (future != null) {
//            future.cancel(true);
//        }
        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 {
//        SimpleMailMessage simpleMailMessage= new SimpleMailMessage();
//        simpleMailMessage.setFrom("1938610143@qq.com");
//        simpleMailMessage.setTo(address);
//        simpleMailMessage.setSubject("标题是测试");
//        simpleMailMessage.setText("这是内容");
//        javaMailSender.send(simpleMailMessage);
        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());

    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值