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

springboot2.0以上調(diào)度器配置線程池的實(shí)現(xiàn)

 更新時(shí)間:2019年12月26日 08:29:26   作者:爾過(guò)  
這篇文章主要介紹了springboot2.0以上調(diào)度器配置線程池的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

一 我們使用@EnableScheduling 開(kāi)啟spring task 調(diào)度器的時(shí)候,發(fā)現(xiàn)此調(diào)度器默認(rèn)配置為單線程的。

二 打開(kāi)注解發(fā)現(xiàn)其配置信息在此SchedulingConfiguration類(lèi)中。發(fā)現(xiàn)其創(chuàng)建了ScheduledTaskRegistrar類(lèi)
研讀代碼不難發(fā)現(xiàn)調(diào)度器默認(rèn)配置是如下代碼,線程池為單線程的。

protected void scheduleTasks() {
 if (this.taskScheduler == null) {
  this.localExecutor = Executors.newSingleThreadScheduledExecutor();
  this.taskScheduler = new ConcurrentTaskScheduler(this.localExecutor);
 }
 if (this.triggerTasks != null) {
  for (TriggerTask task : this.triggerTasks) {
  addScheduledTask(scheduleTriggerTask(task));
  }
 }
 if (this.cronTasks != null) {
  for (CronTask task : this.cronTasks) {
  addScheduledTask(scheduleCronTask(task));
  }
 }
 if (this.fixedRateTasks != null) {
  for (IntervalTask task : this.fixedRateTasks) {
  addScheduledTask(scheduleFixedRateTask(task));
  }
 }
 if (this.fixedDelayTasks != null) {
  for (IntervalTask task : this.fixedDelayTasks) {
  addScheduledTask(scheduleFixedDelayTask(task));
  }
 }
 }

如何改變此配置呢?

如果想改變其中配置則只需要如下核心代碼

package com.ccbobe.common.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.scheduling.annotation.SchedulingConfigurer;
import org.springframework.scheduling.config.ScheduledTaskRegistrar;

import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.ScheduledThreadPoolExecutor;

@EnableScheduling
@Configuration
public class SchedulerConfig implements SchedulingConfigurer {
  @Bean
  public ScheduledExecutorService concurrentTaskScheduler(){
    ScheduledThreadPoolExecutor executorService = new ScheduledThreadPoolExecutor(20);
    executorService.setMaximumPoolSize(20);
    executorService.setRejectedExecutionHandler(new ScheduledThreadPoolExecutor.CallerRunsPolicy());
    return executorService;
  }
  @Override
  public void configureTasks(ScheduledTaskRegistrar taskRegistrar) {
    taskRegistrar.setScheduler(concurrentTaskScheduler());
  }
}

其中Scheduler 支持兩種,種分別是:TaskScheduler 和 ScheduledExecutorService

/**
 * Set the {@link TaskScheduler} to register scheduled tasks with, or a
 * {@link java.util.concurrent.ScheduledExecutorService} to be wrapped as a
 * {@code TaskScheduler}.
 */
 public void setScheduler(@Nullable Object scheduler) {
 if (scheduler == null) {
  this.taskScheduler = null;
 }
 else if (scheduler instanceof TaskScheduler) {
  this.taskScheduler = (TaskScheduler) scheduler;
 }
 else if (scheduler instanceof ScheduledExecutorService) {
  this.taskScheduler = new ConcurrentTaskScheduler(((ScheduledExecutorService) scheduler));
 }
 else {
  throw new IllegalArgumentException("Unsupported scheduler type: " + scheduler.getClass());
 }
 }

完成以上配置,即可讓spring task 運(yùn)行在多線程環(huán)境中。

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

相關(guān)文章

  • Spring入門(mén)到精通之注解開(kāi)發(fā)詳解

    Spring入門(mén)到精通之注解開(kāi)發(fā)詳解

    Spring是輕代碼而重配置的框架,配置比較繁重,影響開(kāi)發(fā)效率,所以注解開(kāi)發(fā)是一種趨勢(shì)。本文將通過(guò)示例為大家詳細(xì)講講Spring如何實(shí)現(xiàn)注解開(kāi)發(fā),感興趣的可以學(xué)習(xí)一下
    2022-07-07
  • Java中Static關(guān)鍵字的五種用法詳解

    Java中Static關(guān)鍵字的五種用法詳解

    這篇文章主要介紹了Java中static的五種用法:修飾成員變量,修飾成員方法,修飾內(nèi)部類(lèi),靜態(tài)代碼塊,靜態(tài)導(dǎo)包,想詳細(xì)了解的小伙伴可以參考閱讀本文
    2023-03-03
  • Java中InputSteam怎么轉(zhuǎn)String

    Java中InputSteam怎么轉(zhuǎn)String

    面了一位實(shí)習(xí)生,叫他給我說(shuō)一下怎么把InputStream轉(zhuǎn)換為String,這種常規(guī)的操作,他竟然都沒(méi)有用過(guò)我準(zhǔn)備結(jié)合工作經(jīng)驗(yàn),整理匯集出了InputStream 到String 轉(zhuǎn)換的十八般武藝,助大家闖蕩 Java 江湖一臂之力,需要的朋友可以參考下
    2021-06-06
  • idea?springBoot項(xiàng)目自動(dòng)注入mapper為空?qǐng)?bào)錯(cuò)的解決方法

    idea?springBoot項(xiàng)目自動(dòng)注入mapper為空?qǐng)?bào)錯(cuò)的解決方法

    這篇文章主要介紹了idea?springBoot項(xiàng)目自動(dòng)注入mapper為空?qǐng)?bào)錯(cuò)的解決方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-03-03
  • Java并發(fā)之BlockingQueue的使用

    Java并發(fā)之BlockingQueue的使用

    這篇文章主要介紹了Java并發(fā)之BlockingQueue的使用,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-06-06
  • mybatis關(guān)聯(lián)關(guān)系映射的實(shí)現(xiàn)

    mybatis關(guān)聯(lián)關(guān)系映射的實(shí)現(xiàn)

    MyBatis的關(guān)聯(lián)關(guān)系映射在復(fù)雜數(shù)據(jù)模型中至關(guān)重要,使開(kāi)發(fā)人員能夠以最靈活的方式滿足不同項(xiàng)目的需求,本文就來(lái)介紹一下mybatis關(guān)聯(lián)關(guān)系映射的實(shí)現(xiàn),感興趣的可以了解一下
    2023-09-09
  • Springdoc替換swagger的實(shí)現(xiàn)步驟分解

    Springdoc替換swagger的實(shí)現(xiàn)步驟分解

    最近在spring看到的,spring要對(duì)api文檔動(dòng)手了,有些人說(shuō)swagger不好用,其實(shí)也沒(méi)那么不好用,有人說(shuō)代碼還是有點(diǎn)侵入性,這倒是真的,我剛試了springdoc可以說(shuō)還是有侵入性但是也可以沒(méi)有侵入性,這就看你對(duì)文檔有什么要求了
    2023-02-02
  • java類(lèi)加載相關(guān)知識(shí)總結(jié)

    java類(lèi)加載相關(guān)知識(shí)總結(jié)

    今天帶大家復(fù)習(xí)Java基礎(chǔ)知識(shí),文章對(duì)Java類(lèi)加載做了詳細(xì)介紹,對(duì)正在學(xué)習(xí)java的小伙伴很有幫助,需要的朋友可以參考下
    2021-05-05
  • java封裝類(lèi)型與基礎(chǔ)類(lèi)型對(duì)比示例分析

    java封裝類(lèi)型與基礎(chǔ)類(lèi)型對(duì)比示例分析

    這篇文章主要為大家介紹了java封裝類(lèi)型與基礎(chǔ)類(lèi)型對(duì)比示例分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-11-11
  • java使用FFmpeg提取音頻的實(shí)現(xiàn)示例

    java使用FFmpeg提取音頻的實(shí)現(xiàn)示例

    在Java開(kāi)發(fā)中,我們經(jīng)常會(huì)遇到需要使用FFmpeg來(lái)處理音視頻文件的情況,本文主要介紹了java使用FFmpeg提取音頻的實(shí)現(xiàn)示例,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-01-01

最新評(píng)論