欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java spring定時任務詳解

 更新時間:2021年10月04日 14:05:36   作者:會飛的小蝸  
這篇文章主要為大家詳細介紹了Spring定時任務,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助

一、定時任務

1、cron表達式

語法:秒 分 時 日 月 周 年

(其中“年”Spring不支持,也就是說在spring定時任務中只能設置:秒 分 時 日 月 周)

在這里插入圖片描述

在這里插入圖片描述

2、cron示例

在這里插入圖片描述

在這里插入圖片描述

3、SpringBoot整合

@EnableScheduling

@Scheduled

實例:

package com.xunqi.gulimall.seckill.scheduled;
import lombok.extern.slf4j.Slf4j;
import org.springframework.scheduling.annotation.Async;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import java.util.concurrent.TimeUnit;
/**
 * @Description:
 * @Created: with IntelliJ IDEA.
 * @author: 夏沫止水
 * @createTime: 2020-07-09 18:49
 **/
/**
 * 定時任務
 *      1、@EnableScheduling 開啟定時任務
 *      2、@Scheduled開啟一個定時任務
 *
 * 異步任務
 *      1、@EnableAsync:開啟異步任務
 *      2、@Async:給希望異步執(zhí)行的方法標注
 */
@Slf4j
@Component
@EnableScheduling
public class HelloScheduled {
    /**
     * 1、在Spring中表達式是6位組成,不允許第七位的年份
     * 2、在周幾的的位置,1-7代表周一到周日
     * 3、定時任務不該阻塞。默認是阻塞的
     *      1)、可以讓業(yè)務以異步的方式,自己提交到線程池
     *              CompletableFuture.runAsync(() -> {
     *         },execute);
     *
     *      2)、支持定時任務線程池;設置 TaskSchedulingProperties
     *        spring.task.scheduling.pool.size: 5
     *
     *      3)、讓定時任務異步執(zhí)行
     *          異步任務
     *
     *      解決:使用異步任務 + 定時任務來完成定時任務不阻塞的功能
     *
     */
     @Scheduled(cron = "*/1 * * * * ?")
     public void hello() {
         log.info("hello...");
         try { TimeUnit.SECONDS.sleep(3); } catch (InterruptedException e) { e.printStackTrace(); }
     }
}

定時任務默認是阻塞的線程,也就是說即使你設置成每一秒執(zhí)行一次,但是方法內(nèi)部的業(yè)務時間需要5秒才能執(zhí)行完,也會造成定時任務每6秒才能執(zhí)行一次。

當然我們可以開啟異步線程:

@EnableAsync

@Async

實例:

package com.xunqi.gulimall.seckill.scheduled;
import lombok.extern.slf4j.Slf4j;
import org.springframework.scheduling.annotation.Async;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import java.util.concurrent.TimeUnit;
/**
 * @Description:
 * @Created: with IntelliJ IDEA.
 * @author: 夏沫止水
 * @createTime: 2020-07-09 18:49
 **/
/**
 * 定時任務
 *      1、@EnableScheduling 開啟定時任務
 *      2、@Scheduled開啟一個定時任務
 *
 * 異步任務
 *      1、@EnableAsync:開啟異步任務
 *      2、@Async:給希望異步執(zhí)行的方法標注
 */
@Slf4j
@Component
@EnableAsync
@EnableScheduling
public class HelloScheduled {
    /**
     * 1、在Spring中表達式是6位組成,不允許第七位的年份
     * 2、在周幾的的位置,1-7代表周一到周日
     * 3、定時任務不該阻塞。默認是阻塞的
     *      1)、可以讓業(yè)務以異步的方式,自己提交到線程池
     *              CompletableFuture.runAsync(() -> {
     *         },execute);
     *
     *      2)、支持定時任務線程池;設置 TaskSchedulingProperties
     *        spring.task.scheduling.pool.size: 5
     *
     *      3)、讓定時任務異步執(zhí)行
     *          異步任務
     *
     *      解決:使用異步任務 + 定時任務來完成定時任務不阻塞的功能
     *
     */
     @Async
     @Scheduled(cron = "*/1 * * * * ?")
     public void hello() {
         log.info("hello...");
         try { TimeUnit.SECONDS.sleep(3); } catch (InterruptedException e) { e.printStackTrace(); }
     }
}

這樣就會開啟異步線程,并且是非阻塞線程,因為每次都會開啟一個線程來執(zhí)行,我們可以看一下源碼配置的截圖,這個就是異步執(zhí)行的默認配置,核心線程數(shù)是8,最大線程數(shù)是無限大,這時如果一直每秒執(zhí)行一次,則會造成服務器資源耗盡。

在這里插入圖片描述

當然,我們可以在配置文件中進行定時任務線程池的設定:

#核心線程數(shù)

spring.task.execution.pool.core-size=20

#最大線程數(shù)

spring.task.execution.pool.max-size=50

#隊列大小

spring.task.execution.pool.queue-capacity=10000

總結(jié)

本篇文章就到這里了,希望能夠給你帶來幫助,也希望您能夠多多關注腳本之家的更多內(nèi)容!

相關文章

  • mybatis連接mysql的實現(xiàn)過程

    mybatis連接mysql的實現(xiàn)過程

    通過配置Maven的pom文件,可以簡化MyBatis連接數(shù)據(jù)庫的過程,免去手動下載和導入各種依賴包的麻煩,本文介紹了如何利用Maven導入MyBatis及其他相關依賴,如Junit、MySQL連接驅(qū)動、Druid連接池和Dbutil等,以簡化數(shù)據(jù)庫操作和測試
    2024-10-10
  • java isInterrupted()判斷線程的實例講解

    java isInterrupted()判斷線程的實例講解

    在本篇內(nèi)容里小編給大家分享的是一篇關于java isInterrupted()判斷線程的實例講解內(nèi)容,有興趣的朋友們可以學習下。
    2021-05-05
  • 如何解決Maven出現(xiàn)Could not find artifact的問題

    如何解決Maven出現(xiàn)Could not find artifact的問題

    這篇文章主要介紹了如何解決Maven出現(xiàn)Could not find artifact的問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-04-04
  • Netty與NIO超詳細講解

    Netty與NIO超詳細講解

    Netty本質(zhì)上是一個NIO的框架,適用于服務器通訊相關的多種應用場景。底層是NIO,NIO底層是Java?IO和網(wǎng)絡IO,再往下是TCP/IP協(xié)議,下面我們跟隨文章來詳細了解
    2022-08-08
  • SpringBoot下載文件的正確解法方式

    SpringBoot下載文件的正確解法方式

    這篇文章主要給大家介紹了關于SpringBoot下載文件的正確解法方式,SpringBoot是一款流行的框架,用于開發(fā)Web應用程序,在使用SpringBoot構(gòu)建Web應用程序時,可能需要實現(xiàn)文件下載的功能,需要的朋友可以參考下
    2023-08-08
  • SpringBoot整合SpringSession實現(xiàn)分布式登錄詳情

    SpringBoot整合SpringSession實現(xiàn)分布式登錄詳情

    這篇文章主要介紹了SpringBoot整合SpringSession實現(xiàn)分布式登錄詳情,文章圍繞主題展開詳細的內(nèi)容介紹,具有一定的參考價值,需要的朋友可以參考一下
    2022-08-08
  • maven中下載jar包源碼和javadoc的命令介紹

    maven中下載jar包源碼和javadoc的命令介紹

    這篇文章主要介紹了maven中下載jar包源碼和javadoc的命令介紹,本文講解了Maven命令下載源碼和javadocs、通過配置文件添加、配置eclipse等內(nèi)容,需要的朋友可以參考下
    2015-03-03
  • 在spring?boot3中使用native?image的最新方法

    在spring?boot3中使用native?image的最新方法

    這篇文章主要介紹了在spring?boot3中使用native?image?,今天我們用具體的例子來給大家演示一下如何正確的將spring boot3的應用編譯成為native image,需要的朋友可以參考下
    2023-01-01
  • Java簡單實現(xiàn)session保存到redis的方法示例

    Java簡單實現(xiàn)session保存到redis的方法示例

    這篇文章主要介紹了Java簡單實現(xiàn)session保存到redis的方法,結(jié)合實例形式分析了Java將session存入redis緩存服務器的相關設置、實現(xiàn)技巧與操作注意事項,需要的朋友可以參考下
    2018-05-05
  • 解決DataOutputStream亂碼的問題

    解決DataOutputStream亂碼的問題

    這篇文章主要介紹了DataOutputStream亂碼問題的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-09-09

最新評論