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

詳解SpringBoot Schedule配置

 更新時間:2017年03月22日 09:55:49   作者:slimer  
本篇文章主要介紹了詳解SpringBoot Schedule配置 ,可以實現(xiàn)定時任務(wù),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

1. 定時任務(wù)實現(xiàn)方式

定時任務(wù)實現(xiàn)方式:

  1. Java自帶的java.util.Timer類,這個類允許你調(diào)度一個java.util.TimerTask任務(wù)。使用這種方式可以讓你的程序按照某一個頻度執(zhí)行,但不能在指定時間運行。一般用的較少,這篇文章將不做詳細介紹。
  2. 使用Quartz,這是一個功能比較強大的的調(diào)度器,可以讓你的程序在指定時間執(zhí)行,也可以按照某一個頻度執(zhí)行,配置起來稍顯復(fù)雜,有空介紹。
  3. SpringBoot自帶的Scheduled,可以將它看成一個輕量級的Quartz,而且使用起來比Quartz簡單許多,本文主要介紹。

定時任務(wù)執(zhí)行方式:

  1. 單線程(串行)
  2. 多線程(并行)

2. 創(chuàng)建定時任務(wù)

package com.autonavi.task.test;

import org.slf4j.Logger;

import org.slf4j.LoggerFactory;

import org.springframework.scheduling.annotation.Scheduled;

import org.springframework.stereotype.Component;

import com.autonavi.task.ScheduledTasks;

@Component

public class ScheduledTest {

  private static final Logger logger = LoggerFactory.getLogger(ScheduledTasks.class); 

  @Scheduled(cron="0 0/2 * * * ?") 

  public void executeFileDownLoadTask() { 

    // 間隔2分鐘,執(zhí)行任務(wù)   

    Thread current = Thread.currentThread(); 

    System.out.println("定時任務(wù)1:"+current.getId());

    logger.info("ScheduledTest.executeFileDownLoadTask 定時任務(wù)1:"+current.getId()+ ",name:"+current.getName());

  }

} 

@Scheduled 注解用于標(biāo)注這個方法是一個定時任務(wù)的方法,有多種配置可選。cron支持cron表達式,指定任務(wù)在特定時間執(zhí)行;fixedRate以特定頻率執(zhí)行任務(wù);fixedRateString以string的形式配置執(zhí)行頻率。

3. 啟動定時任務(wù)

@SpringBootApplication

@EnableScheduling

public class App { 

  private static final Logger logger = LoggerFactory.getLogger(App.class); 

  public static void main(String[] args) {

    SpringApplication.run(App.class, args);   

    logger.info("start");            

  }  

} 

其中 @EnableScheduling 注解的作用是發(fā)現(xiàn)注解@Scheduled的任務(wù)并后臺執(zhí)行。

Springboot本身默認的執(zhí)行方式是串行執(zhí)行,也就是說無論有多少task,都是一個線程串行執(zhí)行,并行需手動配置

4. 并行任務(wù)

繼承SchedulingConfigurer類并重寫其方法即可,如下:

@Configuration

@EnableScheduling

public class ScheduleConfig implements SchedulingConfigurer {

  @Override

  public void configureTasks(ScheduledTaskRegistrar taskRegistrar) {

    taskRegistrar.setScheduler(taskExecutor());

  } 

  @Bean(destroyMethod="shutdown")

  public Executor taskExecutor() {

    return Executors.newScheduledThreadPool(100);

  }

} 

再次執(zhí)行之前的那個Demo,會欣然發(fā)現(xiàn)已經(jīng)是并行執(zhí)行了!   

5. 異步并行任務(wù)

import org.springframework.scheduling.TaskScheduler;

import org.springframework.scheduling.annotation.AsyncConfigurer;

import org.springframework.scheduling.annotation.EnableAsync;

import org.springframework.scheduling.annotation.EnableScheduling;

import org.springframework.scheduling.annotation.SchedulingConfigurer;

import org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler;

import org.springframework.scheduling.config.ScheduledTaskRegistrar;

 

@Configuration

@EnableScheduling

@EnableAsync(

mode = AdviceMode.PROXY, proxyTargetClass = false,

order = Ordered.HIGHEST_PRECEDENCE

)

@ComponentScan(

basePackages = "hello"

)

public class RootContextConfiguration implements

AsyncConfigurer, SchedulingConfigurer {

@Bean

public ThreadPoolTaskScheduler taskScheduler()

{

ThreadPoolTaskScheduler scheduler = new ThreadPoolTaskScheduler();

scheduler.setPoolSize(20);

scheduler.setThreadNamePrefix("task-");

scheduler.setAwaitTerminationSeconds(60);

scheduler.setWaitForTasksToCompleteOnShutdown(true);

return scheduler;

}

 

@Override

public Executor getAsyncExecutor()

{

Executor executor = this.taskScheduler();

return executor;

}

 

@Override

public void configureTasks(ScheduledTaskRegistrar registrar)

{

TaskScheduler scheduler = this.taskScheduler();

registrar.setTaskScheduler(scheduler);

}

} 

在啟動的main方法加入額外配置:

@SpringBootApplication

public class Application { 

  public static void main(String[] args) throws Exception {

   AnnotationConfigApplicationContext rootContext =

   new AnnotationConfigApplicationContext();

 

  rootContext.register(RootContextConfiguration.class);

  rootContext.refresh();

  }

} 

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 淺談一下Java中的ReentrantLock

    淺談一下Java中的ReentrantLock

    這篇文章主要介紹了淺談一下Java中的ReentrantLock,這個類是JUC工具包中對線程安全問題提供的一種解決方案,它主要是用來給對象上鎖,保證同一時間這能有一個線程在訪問當(dāng)前對象,需要的朋友可以參考下
    2023-09-09
  • 關(guān)于Spring Boot和Kotlin的聯(lián)合開發(fā)

    關(guān)于Spring Boot和Kotlin的聯(lián)合開發(fā)

    這篇文章主要介紹了關(guān)于Spring Boot和Kotlin的聯(lián)合開發(fā),需要的朋友可以參考下
    2017-06-06
  • idea查看properties中文變成unicode碼的解決方案

    idea查看properties中文變成unicode碼的解決方案

    這篇文章主要介紹了idea查看properties中文變成unicode碼的解決方案,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-06-06
  • Java字符編碼簡介_動力節(jié)點Java學(xué)院整理

    Java字符編碼簡介_動力節(jié)點Java學(xué)院整理

    這篇文章主要介紹了Java字符編碼簡介,本文主要包括以下幾個方面:編碼基本知識,Java,系統(tǒng)軟件,url,工具軟件等,感興趣的朋友一起看看吧
    2017-08-08
  • java實現(xiàn)Fibonacci算法實例

    java實現(xiàn)Fibonacci算法實例

    這篇文章主要介紹了java實現(xiàn)Fibonacci算法的方法,以實例形式較為詳細的分析了java實現(xiàn)Fibonacci算法的原理與相關(guān)技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-09-09
  • Mybatis模糊查詢和動態(tài)sql語句的用法

    Mybatis模糊查詢和動態(tài)sql語句的用法

    今天小編就為大家分享一篇關(guān)于Mybatis模糊查詢和動態(tài)sql語句的用法,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-03-03
  • MyBatis中動態(tài)sql的實現(xiàn)方法示例

    MyBatis中動態(tài)sql的實現(xiàn)方法示例

    這篇文章主要給大家介紹了關(guān)于MyBatis中動態(tài)sql的實現(xiàn)方法,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-11-11
  • 聊聊Lombok中的@Builder注解使用教程

    聊聊Lombok中的@Builder注解使用教程

    @Builder注解的作用主要是用來生成對象,并且可以為對象鏈?zhǔn)劫x值。接下來通過本文給大家介紹Lombok中的@Builder注解使用教程,感興趣的朋友一起看看吧
    2021-11-11
  • netty?pipeline中的inbound和outbound事件傳播分析

    netty?pipeline中的inbound和outbound事件傳播分析

    這篇文章主要為大家介紹了netty?pipeline中的inbound和outbound事件傳播分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-04-04
  • 解決mybatis使用foreach批量insert異常的問題

    解決mybatis使用foreach批量insert異常的問題

    這篇文章主要介紹了解決mybatis使用foreach批量insert異常的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-01-01

最新評論

荔波县| 长沙市| 溧阳市| 滕州市| 科技| 望城县| 灵寿县| 枞阳县| 红原县| 临猗县| 正蓝旗| 浮梁县| 黄龙县| 麦盖提县| 囊谦县| 巩义市| 石嘴山市| 饶平县| 桓仁| 万安县| 金阳县| 卓尼县| 常熟市| 读书| 文化| 思南县| 宜宾市| 霞浦县| 大余县| 东丰县| 治多县| 荆门市| 四子王旗| 西盟| 新龙县| 吉林市| 彭州市| 万山特区| 鱼台县| 长兴县| 丽江市|