返回顶部
首页 > 资讯 > 精选 >springboot2.0以上调度器如何配置线程池
  • 384
分享到

springboot2.0以上调度器如何配置线程池

2023-06-02 13:06:49 384人浏览 独家记忆
摘要

这篇文章给大家分享的是有关SpringBoot2.0以上调度器如何配置线程池的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。  springboot2.0 以上spring task 开启多线程  一 我们使用@E

这篇文章给大家分享的是有关SpringBoot2.0以上调度器如何配置线程池的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

  springboot2.0 以上spring task 开启多线程

  一 我们使用@EnableScheduling 开启spring task 调度器的时候,发现此调度器默认配置为单线程的。

  二 打开注解发现其配置信息在此SchedulinGConfiguration类中。发现其创建了ScheduledTaskReGIStrar类

  研读代码不难发现调度器默认配置是如下代码,线程池为单线程的。

  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郑州做人流手术 Http://rl.zyfuke.com/

  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 运行在多线程环境中。

感谢各位的阅读!关于“springboot2.0以上调度器如何配置线程池”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

--结束END--

本文标题: springboot2.0以上调度器如何配置线程池

本文链接: https://lsjlt.com/news/230168.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • springboot2.0以上调度器如何配置线程池
    这篇文章给大家分享的是有关springboot2.0以上调度器如何配置线程池的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。  springboot2.0 以上spring task 开启多线程  一 我们使用@E...
    99+
    2023-06-02
  • Java线程池架构中的多线程调度器是什么
    本篇文章为大家展示了Java线程池架构中的多线程调度器是什么,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。我们如果要用java默认的线程池来做调度器,一种选择就是Timer和TimerTask的结合...
    99+
    2023-06-17
  • weblogic线程池如何设置
    WebLogic线程池是用于处理客户端请求的线程池。通过适当地设置线程池参数,可以优化系统的性能和资源利用率。以下是设置WebLog...
    99+
    2023-09-01
    weblogic
  • 详解Java如何关闭线程以及线程池
    目录前言1. 关闭线程1.1 volatile关键字1.2 intrrrupt()方法2.关闭线程池2.1 shutdownNow()方法2.2 shutdown()方法前言 这个问...
    99+
    2024-04-02
  • C++并发编程:如何进行任务调度和线程池管理?
    任务调度和线程池管理是 c++++ 并发编程中提高效率和可扩展性的关键。任务调度:使用 std::thread 创建新线程。使用 join() 方法加入线程。线程池管理:创建 threa...
    99+
    2024-05-06
    c++ 并发编程
  • 如何在websphere上配置mysql连接池
    这篇文章主要介绍“如何在websphere上配置mysql连接池”,在日常操作中,相信很多人在如何在websphere上配置mysql连接池问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望...
    99+
    2024-04-02
  • SpringBoot异步使用@Async的原理以及线程池配置详解
    目录前言 使用步骤 配置线程池类参数配置 自定义线程任务 总结 原理刨析 文章参考 前言 在实际项目开发中很多业务场景需要使用异步去完成,比如消息通知,日志记录,等非常常用的都可以...
    99+
    2024-04-02
  • 微服务架构中如何处理服务的线程池和任务调度?
    随着微服务架构在企业级应用中的广泛应用,对于如何优化微服务的性能和稳定性也成为了人们关注的焦点。在微服务中,一个微服务可能会处理数千个请求,而服务的线程池和任务调度也是微服务性能和稳定性的重要组成部分。本文将介绍微服务架构中的线程池和任务调...
    99+
    2023-05-17
    线程池 任务调度 微服务架构
  • mysql5.7以上版本如何配置my.ini
    这篇文章主要介绍mysql5.7以上版本如何配置my.ini,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!Windows 64 位 mysql 5.7以上版本包解压中没有data目录...
    99+
    2024-04-02
  • springboot线程数如何配置
    在Spring Boot应用中,可以通过以下方式配置线程池的大小:1. 使用`spring.task.execution.pool....
    99+
    2023-09-16
    springboot
  • tomcat线程数如何配置
    要配置Tomcat的线程数,需要修改Tomcat的配置文件server.xml。在server.xml中找到元素,该元素用于配置To...
    99+
    2023-09-16
    tomcat
  • java线程池如何合理设置最大线程数和核心线程数
    这篇文章将为大家详细讲解有关java线程池如何合理设置最大线程数和核心线程数,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。线程池合理设置最大线程数和核心线程数工作中有这样一个场景,需要处理千万级别的数据的...
    99+
    2023-06-22
  • ASP教程:如何在Linux上配置PATH以便运行程序?
    在Linux系统中,PATH是一个环境变量,它用于指定可执行程序的搜索路径。在运行命令时,系统会按照PATH中指定的顺序搜索可执行程序,直到找到为止。因此,正确配置PATH对于在Linux系统中运行程序至关重要。 下面是如何在Linux上...
    99+
    2023-09-12
    教程 path linux
  • node最新版yum部署以及iview admin线上如何部署nginx配置
    本篇文章给大家分享的是有关node最新版yum部署以及iview admin线上如何部署nginx配置,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看...
    99+
    2024-04-02
  • java多线程参数如何配置
    在Java中,可以通过设置以下参数来配置多线程: 线程数(Thread Count):可以设置同时运行的线程数量。可以根据系统的...
    99+
    2024-02-29
    java
  • PHP+zend studio如何配置远程调试
    PHP作为web领域的佼佼者也有其不方便的地方。对于Java来说,我们都知道可以直接通过Myeclipse等IDE直接打断点进行调试。但是对于PHP来说,就不是那么简单了。当然也有它自己的方法,那就是借...
    99+
    2024-02-27
  • 如何在 Linux 上配置 PHP 路径以使用 Laravel?
    在Linux上使用Laravel需要配置PHP路径,否则Laravel将无法正常工作。本文将介绍如何在Linux上配置PHP路径以使用Laravel。 第一步:确定PHP路径 首先,需要确定PHP的路径。可以通过在终端中运行以下命令来确定P...
    99+
    2023-06-13
    path laravel linux
  • Java线程池中的各个参数如何合理设置
    一、前言 在开发过程中,好多场景要用到线程池。每次都是自己根据业务场景来设置线程池中的各个参数。 这两天又有需求碰到了,索性总结一下方便以后再遇到可以直接看着用。 虽说根据业务场景来...
    99+
    2024-04-02
  • Goland协程调度器scheduler如何实现
    本篇内容主要讲解“Goland协程调度器scheduler如何实现”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Goland协程调度器scheduler如何实现”吧!1. 调度器schedule...
    99+
    2023-06-30
  • 在java项目中使用线程池如何实现获取运行线程数并控制线程启动速度
    这期内容当中小编将会给大家带来有关在java项目中使用线程池如何实现获取运行线程数并控制线程启动速度,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。在java里, 我们可以使用Executors.newFi...
    99+
    2023-05-31
    java 线程池 线程
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作