欧美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 Boot + Vue 前后端分離項(xiàng)目如何踢掉已登錄用戶

    Spring Boot + Vue 前后端分離項(xiàng)目如何踢掉已登錄用戶

    這篇文章主要介紹了Spring Boot + Vue 前后端分離項(xiàng)目如何踢掉已登錄用戶,需要的朋友可以參考下
    2020-05-05
  • 詳解Spring?Security?捕獲?filter?層面異常返回我們自定義的內(nèi)容

    詳解Spring?Security?捕獲?filter?層面異常返回我們自定義的內(nèi)容

    Spring?的異常會(huì)轉(zhuǎn)發(fā)到?BasicErrorController?中進(jìn)行異常寫(xiě)入,然后才會(huì)返回客戶端。所以,我們可以在?BasicErrorController?對(duì)?filter異常進(jìn)行捕獲并處理,下面通過(guò)本文給大家介紹Spring?Security?捕獲?filter?層面異常,返回我們自定義的內(nèi)容,感興趣的朋友一起看看吧
    2022-05-05
  • Java AQS中CyclicBarrier回環(huán)柵欄的使用

    Java AQS中CyclicBarrier回環(huán)柵欄的使用

    這篇文章主要介紹了Java中的 CyclicBarrier詳解,CyclicBarrier沒(méi)有顯示繼承哪個(gè)父類(lèi)或者實(shí)現(xiàn)哪個(gè)父接口, 所有AQS和重入鎖不是通過(guò)繼承實(shí)現(xiàn)的,而是通過(guò)組合實(shí)現(xiàn)的,下文相關(guān)內(nèi)容需要的小伙伴可以參考一下
    2023-02-02
  • java實(shí)現(xiàn)題目以及選項(xiàng)亂序的方法實(shí)例

    java實(shí)現(xiàn)題目以及選項(xiàng)亂序的方法實(shí)例

    這篇文章主要給大家介紹了關(guān)于java實(shí)現(xiàn)題目以及選項(xiàng)亂序的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • Java利用過(guò)濾器實(shí)現(xiàn)完善登錄功能

    Java利用過(guò)濾器實(shí)現(xiàn)完善登錄功能

    這篇文章主要為大家詳細(xì)介紹了Java如何利用過(guò)濾器實(shí)現(xiàn)完善登錄功能,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)Java有一定幫助,需要的可以參考一下
    2022-09-09
  • Java不用算數(shù)運(yùn)算符來(lái)實(shí)現(xiàn)求和方法

    Java不用算數(shù)運(yùn)算符來(lái)實(shí)現(xiàn)求和方法

    我們都知道,Java的運(yùn)算符除了具有優(yōu)先級(jí)之外,還有一個(gè)結(jié)合性的特點(diǎn)。當(dāng)一個(gè)表達(dá)式中出現(xiàn)多種運(yùn)算符時(shí),執(zhí)行的先后順序不僅要遵守運(yùn)算符優(yōu)先級(jí)別的規(guī)定,還要受運(yùn)算符結(jié)合性的約束,以便確定是自左向右進(jìn)行運(yùn)算還是自右向左進(jìn)行運(yùn)算,但是如果不用運(yùn)算符怎么求和呢
    2022-04-04
  • JVM內(nèi)存參數(shù)配置詳解

    JVM內(nèi)存參數(shù)配置詳解

    本文主要介紹了JVM內(nèi)存參數(shù)配置詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-02-02
  • Java HttpClient實(shí)現(xiàn)socks代理的示例代碼

    Java HttpClient實(shí)現(xiàn)socks代理的示例代碼

    這篇文章主要介紹了Java HttpClient 實(shí)現(xiàn) socks 代理的示例代碼,幫助大家更好的理解和使用Java,感興趣的朋友可以了解下
    2020-11-11
  • Java集合的組內(nèi)平均值的計(jì)算方法總結(jié)

    Java集合的組內(nèi)平均值的計(jì)算方法總結(jié)

    在Java中,經(jīng)常需要對(duì)集合進(jìn)行各種操作,其中之一就是計(jì)算集合的組內(nèi)平均值,本文將介紹如何使用Java集合來(lái)計(jì)算組內(nèi)平均值,并提供一些示例代碼和實(shí)用技巧
    2024-08-08
  • 通過(guò)String.intern()方法淺談堆中常量池

    通過(guò)String.intern()方法淺談堆中常量池

    這篇文章主要介紹了通過(guò)String.intern()方法淺談堆中常量池,在JDK7之前,字符串常量是存在永久帶Perm 區(qū)的,JDK7開(kāi)始在將常量池遷移到堆中,這個(gè)變化也導(dǎo)致了String的新特性,下面我們慢慢進(jìn)行介紹。,需要的朋友可以參考下
    2019-06-06

最新評(píng)論