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

詳解SpringBoot Schedule配置

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

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

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

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

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

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

2. 創(chuàng)建定時(shí)任務(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("定時(shí)任務(wù)1:"+current.getId());

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

  }

} 

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

3. 啟動(dòng)定時(shí)任務(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ù)并后臺(tái)執(zhí)行。

Springboot本身默認(rèn)的執(zhí)行方式是串行執(zhí)行,也就是說(shuō)無(wú)論有多少task,都是一個(gè)線(xiàn)程串行執(zhí)行,并行需手動(dòng)配置

4. 并行任務(wù)

繼承SchedulingConfigurer類(lèi)并重寫(xiě)其方法即可,如下:

@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í)行之前的那個(gè)Demo,會(huì)欣然發(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);

}

} 

在啟動(dòng)的main方法加入額外配置:

@SpringBootApplication

public class Application { 

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

   AnnotationConfigApplicationContext rootContext =

   new AnnotationConfigApplicationContext();

 

  rootContext.register(RootContextConfiguration.class);

  rootContext.refresh();

  }

} 

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

相關(guān)文章

  • 關(guān)于SpringBoot大文件RestTemplate下載解決方案

    關(guān)于SpringBoot大文件RestTemplate下載解決方案

    這篇文章主要介紹了SpringBoot大文件RestTemplate下載解決方案,最近結(jié)合網(wǎng)上案例及自己總結(jié),寫(xiě)了一個(gè)分片下載tuling/fileServer項(xiàng)目,需要的朋友可以參考下
    2021-10-10
  • java后端+前端使用WebSocket實(shí)現(xiàn)消息推送的詳細(xì)流程

    java后端+前端使用WebSocket實(shí)現(xiàn)消息推送的詳細(xì)流程

    后端向前端推送消息就需要長(zhǎng)連接,首先想到的就是websocket,下面這篇文章主要給大家介紹了關(guān)于java后端+前端使用WebSocket實(shí)現(xiàn)消息推送的詳細(xì)流程,需要的朋友可以參考下
    2022-10-10
  • Java基礎(chǔ)學(xué)習(xí)之IO流應(yīng)用案例詳解

    Java基礎(chǔ)學(xué)習(xí)之IO流應(yīng)用案例詳解

    這篇文章主要為大家詳細(xì)介紹了Java?IO流的三個(gè)應(yīng)用案例:點(diǎn)名器、集合到文件和文件到集合,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下
    2022-09-09
  • Java-性能分析和監(jiān)控工具深入詳解

    Java-性能分析和監(jiān)控工具深入詳解

    這篇文章主要介紹了Java-性能分析和監(jiān)控工具深入詳解,文章內(nèi)容詳細(xì),簡(jiǎn)單易懂,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2023-01-01
  • Spring-cloud Config Server的3種配置方式

    Spring-cloud Config Server的3種配置方式

    這篇文章主要介紹了Spring-cloud Config Server的3種配置方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-09-09
  • 如何基于SpringSecurity的@PreAuthorize實(shí)現(xiàn)自定義權(quán)限校驗(yàn)方法

    如何基于SpringSecurity的@PreAuthorize實(shí)現(xiàn)自定義權(quán)限校驗(yàn)方法

    spring Security提供有若干個(gè)過(guò)濾器,它們能夠攔截Servlet請(qǐng)求,并將這些請(qǐng)求轉(zhuǎn)給認(rèn)證和訪(fǎng)問(wèn)決策管理器處理,從而增強(qiáng)安全性,下面這篇文章主要給大家介紹了關(guān)于如何基于SpringSecurity的@PreAuthorize實(shí)現(xiàn)自定義權(quán)限校驗(yàn)方法的相關(guān)資料,需要的朋友可以參考下
    2023-03-03
  • 基于SSM實(shí)現(xiàn)學(xué)生管理系統(tǒng)

    基于SSM實(shí)現(xiàn)學(xué)生管理系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了基于SSM實(shí)現(xiàn)學(xué)生管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-12-12
  • Spring Boot集成Druid查看配置是否生效的方法

    Spring Boot集成Druid查看配置是否生效的方法

    本文主要介紹了Spring Boot集成Druid查看配置是否生效的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-06-06
  • 關(guān)于apollo和Spring集成@Value注解通用解析

    關(guān)于apollo和Spring集成@Value注解通用解析

    這篇文章主要介紹了關(guān)于apollo和Spring集成@Value注解通用解析,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-11-11
  • Jenkins的安裝配置詳解

    Jenkins的安裝配置詳解

    這篇文章主要介紹了Jenkins的安裝配置詳解,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-06-06

最新評(píng)論