• 20220516 Core Features 7. Task Execution and Scheduling


    前言

    文档地址

    在上下文中没有Executor bean的情况下,Spring Boot 会使用合理的默认值自动配置一个 ThreadPoolTaskExecutor ,这些默认值可以自动关联到 异步任务执行( @EnableAsync )和 Spring MVC 异步请求处理。

    如果您在上下文中定义了一个自定义 Executor ,则常规任务执行(即 @EnableAsync )将透明地使用它,但由于需要 AsyncTaskExecutor 实现(名为 applicationTaskExecutor ),因此不会配置 Spring MVC 支持。根据你的目标安排,你可以改变 ExecutorThreadPoolTaskExecutor 或同时定义 ThreadPoolTaskExecutorAsyncConfigurer 包装您的自定义 Executor

    通过自动配置的 TaskExecutorBuilder ,您可以轻松创建实例,以重现默认情况下自动配置的功能。

    线程池使用 8 个核心线程,这些线程可以根据负载增长和收缩。可以使用 spring.task.execution 名称空间对这些默认设置进行微调,如以下示例所示:

    spring.task.execution.pool.max-size=16
    spring.task.execution.pool.queue-capacity=100
    spring.task.execution.pool.keep-alive=10s
    

    这会将线程池更改为使用有界队列,以便在队列已满(100 个任务)时,线程池最多增加到 16 个线程。池的收缩更加激进,因为当线程空闲 10 秒(而不是默认情况下的 60 秒)时,它们将被回收。

    如果需要与计划的任务执行( @EnableScheduling )关联,也可以自动配置 ThreadPoolTaskScheduler 。线程池默认使用一个线程,可以使用 spring.task.scheduling 名称空间对这些设置进行微调。

    spring.task.scheduling.thread-name-prefix=scheduling-
    spring.task.scheduling.pool.size=2
    

    如果要创建自定义的执行器或调度器,上下文提供了 TaskExecutorBuilder bean 和 TaskSchedulerBuilder bean。

    参考源码:

    • org.springframework.boot.autoconfigure.task.TaskExecutionAutoConfiguration
  • 相关阅读:
    2018——测试与信仰
    面试必备----测试用例笔试题分享
    软件测试人员必备网络知识(一):什么是cookie?
    Postman和Selenium IDE开局自带红蓝BUFF属性,就问你要还是不要
    【Loadrunner】LR参数化:利用mysql数据库里面的数据进行参数化
    因果图法设计测试用例
    场景法设计测试用例
    Linux Centos7下安装Python
    Vmware安装与VMware下Linux系统安装
    Python运算符与表达式
  • 原文地址:https://www.cnblogs.com/huangwenjie/p/16354165.html
Copyright © 2020-2023  润新知