AsyncTask,MailTask,ScheduledTask

一,異步任務

  簡單的實現,在作具體業務時具體分析html

1.在springboot的啓動類上加java

 

2.在業務層實現異步的具體方法,spring

 

結束~,一個簡單的異步任務demo實現啦~springboot

 

二,郵件任務

1,導入依賴併發

     <!--郵件任務依賴-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-mail</artifactId>
        </dependency>

 

2.在peoperties或yaml配置郵件任務驅動的相關信息異步

注意:拿qq郵件舉例,在寫代碼前需取本身的qq郵箱開通smtp服務spring-boot

spring.mail.username=3342239623@qq.com
spring.mail.password=zxmutdmcxrmgdafj
spring.mail.host=smtp.qq.com

#開啓加密驗證,只有qq的郵箱必須開啓ssl,其餘大廠郵箱不須要
spring.mail.properties.mail.smtp.ssl.enable=true

 

 

3.郵件任務簡單的實現高併發

3.1簡單郵件發送的實現工具

class Springboot09TestApplicationTests {

    @Autowired
    JavaMailSender mailSender;

    @Test
    void contextLoads() {

        //一個簡單的郵件任務測試
        SimpleMailMessage mailMessage=new SimpleMailMessage();

        mailMessage.setSubject("帥哥,您好");
        mailMessage.setText("勵志作一個java全乾工程師,來自另外一個帥哥給您發送的郵件");
        mailMessage.setTo("xxxxx@qq.com");
        mailMessage.setFrom("xxxxx@qq.com");

        mailSender.send(mailMessage);
    }

 

3.2複雜郵件格式信息發送實現測試

能夠自定義發送文本格式(圖片視頻),也能夠設置樣式

    @Test
    void contextLoads2() throws MessagingException {

        //一個複雜的郵件任務測試
        MimeMessage mimeMessage = mailSender.createMimeMessage();
        //組裝
        MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, true);

        //正文
        helper.setSubject("帥哥,您好");
        helper.setText("<h1 style='color:red'>您有一張圖片請查收</h1>",true);

        //附件
        helper.addAttachment("1.jpg",new File("相對路徑or絕對路徑"));

        helper.setTo("xxxxxx@qq.com");
        helper.setFrom("xxxxxx@qq.com");

        mailSender.send(mimeMessage);
    }

擴展:郵件任務是業務開發中比較常見的,因此能夠將他封裝成一個工具類,以便於之後的使用

 

簡單的郵件任務工具類

/**
     *
     * @param html
     * @param subject
     * @throws MessagingException
     * @Author king~
     */
    //自定義封裝成一個工具類
    public void sedMail(Boolean html,String subject) throws MessagingException {


        //一個複雜的郵件任務測試
        MimeMessage mimeMessage = mailSender.createMimeMessage();
        //組裝
        MimeMessageHelper helper = new MimeMessageHelper(mimeMessage,html);

        //正文
        helper.setSubject(subject);
        helper.setText("<h1 style='color:red'>您有一張圖片請查收</h1>",true);

        //附件
        helper.addAttachment("1.jpg",new File("相對路徑or絕對路徑")); 
     helper.setTo(
"xxxxx@qq.com"); helper.setFrom("xxxx3@qq.com"); mailSender.send(mimeMessage); }

 

定時任務

說明:最先是Timer,相信你們都已經很是熟悉 java.util.Timer 了,它是最簡單的一種實現任務調度的方法
特色:in JDK,簡潔,單線程

可是由於他是單線程因此它是串行的,因此不能知足當前盛行的高併發的需求開發

所以出現了ScheduledExecutor;

此篇實現的就是基於ScheduledExecutor的;

 

相關注解:

 

 

實現:

1.在啓動類標註 @EnableScheduling  //開啓定時任務

2.在業務層的定時任務相關方法上標註註解  @Scheduled(cron="0/2 * * * * ?")  //表示何時執行

 

實現一個小demo,

功能:每兩秒給特定郵箱發送垃圾郵件!實現郵件轟炸!

提示:請不要將合法手段用到不正當的地方

@Service
public class ScheduledService {
    @Autowired
    JavaMailSender mailSender;
    //在一個固定的時間執行這個方法~ Timer
    //corn表達式!
    //格式:秒,分,時,日,月,周幾~  有在線生成工具
    /*
    * 例子:30 15 10 * * ?  天天的10點15分30秒調度(執行)一次
    *      30 0/5 10,18 * * ?   天天的18點和10點的30秒處,每隔5分鐘執行一次
    *      0 15 10 ? * 1-6 週一至週六的10.15分鐘執行一次
    * */
    @Scheduled(cron="0/2 * * * * ?")
    public void hello(){
        //一個簡單的郵件任務測試
        SimpleMailMessage mailMessage=new SimpleMailMessage();

        mailMessage.setSubject("帥哥,您好");
        mailMessage.setText("我是郵件轟炸機,您已被擊中");
        mailMessage.setTo("xxxxxxx@qq.com");
        mailMessage.setFrom(xxxxxx@qq.com");

        mailSender.send(mailMessage);
        System.out.println("hello,你被執行了~");
    }

}
相關文章
相關標籤/搜索