最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java spring定時(shí)任務(wù)詳解

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

一、定時(shí)任務(wù)

1、cron表達(dá)式

語法:秒 分 時(shí) 日 月 周 年

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

在這里插入圖片描述

在這里插入圖片描述

2、cron示例

在這里插入圖片描述

在這里插入圖片描述

3、SpringBoot整合

@EnableScheduling

@Scheduled

實(shí)例:

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
 **/
/**
 * 定時(shí)任務(wù)
 *      1、@EnableScheduling 開啟定時(shí)任務(wù)
 *      2、@Scheduled開啟一個(gè)定時(shí)任務(wù)
 *
 * 異步任務(wù)
 *      1、@EnableAsync:開啟異步任務(wù)
 *      2、@Async:給希望異步執(zhí)行的方法標(biāo)注
 */
@Slf4j
@Component
@EnableScheduling
public class HelloScheduled {
    /**
     * 1、在Spring中表達(dá)式是6位組成,不允許第七位的年份
     * 2、在周幾的的位置,1-7代表周一到周日
     * 3、定時(shí)任務(wù)不該阻塞。默認(rèn)是阻塞的
     *      1)、可以讓業(yè)務(wù)以異步的方式,自己提交到線程池
     *              CompletableFuture.runAsync(() -> {
     *         },execute);
     *
     *      2)、支持定時(shí)任務(wù)線程池;設(shè)置 TaskSchedulingProperties
     *        spring.task.scheduling.pool.size: 5
     *
     *      3)、讓定時(shí)任務(wù)異步執(zhí)行
     *          異步任務(wù)
     *
     *      解決:使用異步任務(wù) + 定時(shí)任務(wù)來完成定時(shí)任務(wù)不阻塞的功能
     *
     */
     @Scheduled(cron = "*/1 * * * * ?")
     public void hello() {
         log.info("hello...");
         try { TimeUnit.SECONDS.sleep(3); } catch (InterruptedException e) { e.printStackTrace(); }
     }
}

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

當(dāng)然我們可以開啟異步線程:

@EnableAsync

@Async

實(shí)例:

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
 **/
/**
 * 定時(shí)任務(wù)
 *      1、@EnableScheduling 開啟定時(shí)任務(wù)
 *      2、@Scheduled開啟一個(gè)定時(shí)任務(wù)
 *
 * 異步任務(wù)
 *      1、@EnableAsync:開啟異步任務(wù)
 *      2、@Async:給希望異步執(zhí)行的方法標(biāo)注
 */
@Slf4j
@Component
@EnableAsync
@EnableScheduling
public class HelloScheduled {
    /**
     * 1、在Spring中表達(dá)式是6位組成,不允許第七位的年份
     * 2、在周幾的的位置,1-7代表周一到周日
     * 3、定時(shí)任務(wù)不該阻塞。默認(rèn)是阻塞的
     *      1)、可以讓業(yè)務(wù)以異步的方式,自己提交到線程池
     *              CompletableFuture.runAsync(() -> {
     *         },execute);
     *
     *      2)、支持定時(shí)任務(wù)線程池;設(shè)置 TaskSchedulingProperties
     *        spring.task.scheduling.pool.size: 5
     *
     *      3)、讓定時(shí)任務(wù)異步執(zhí)行
     *          異步任務(wù)
     *
     *      解決:使用異步任務(wù) + 定時(shí)任務(wù)來完成定時(shí)任務(wù)不阻塞的功能
     *
     */
     @Async
     @Scheduled(cron = "*/1 * * * * ?")
     public void hello() {
         log.info("hello...");
         try { TimeUnit.SECONDS.sleep(3); } catch (InterruptedException e) { e.printStackTrace(); }
     }
}

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

在這里插入圖片描述

當(dāng)然,我們可以在配置文件中進(jìn)行定時(shí)任務(wù)線程池的設(shè)定:

#核心線程數(shù)

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

#最大線程數(shù)

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

#隊(duì)列大小

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

總結(jié)

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

相關(guān)文章

最新評(píng)論

保定市| 胶南市| 正阳县| 凤城市| 衡东县| 和龙市| 池州市| 若羌县| 淮北市| 遵义县| 广元市| 左云县| 驻马店市| 集贤县| 于都县| 凤山市| 威远县| 内黄县| 冷水江市| 湘潭市| 顺义区| 临猗县| 辽中县| 平南县| 巩留县| 彭水| 彭水| 金华市| 蒙阴县| 峡江县| 绥化市| 昌黎县| 镇雄县| 思茅市| 乌海市| 大兴区| 乌鲁木齐市| 象山县| 安西县| 武定县| 江西省|