`
kanpiaoxue
  • 浏览: 1781365 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

spring配置ThreadPoolExecutor

 
阅读更多

 

 我想使用JDK自带的线程池,如何使用spring配置呢?

 

 

package org.kanpiaoxue.example.utils;
import java.util.concurrent.ThreadFactory;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.concurrent.BasicThreadFactory;

public class ThreadPool {
    /**
     *
     * @param pattern
     *            线程池的名字模式,格式如:threadName-%d
     * @return 线程工厂
     * @author kanpiaoxue
     * @CreateTime: 2018/08/01 20:30:10
     * @Description: 创建带有线程池的名字模式的线程工厂
     */
    public static ThreadFactory newThreadFactory(String pattern) {
        BasicThreadFactory factory = new BasicThreadFactory.Builder()
                .namingPattern(StringUtils.isNotBlank(pattern) ? pattern : "thread-pool-%d").build();
        return factory;
    }
}

 

spring xml

<!-- 配置threadFactory,用来为线程池命名 -->
<bean id="threadFactory" class="org.kanpiaoxue.example.utils.ThreadPool"
    factory-method="newThreadFactory">
    <!-- 注意 constructor-arg 的用法(javadoc原文):Note: A single generic argument value will just be used once, 
    rather than potentially matched multiple times (as of Spring 1.1). constructor-arg elements are also used in 
    conjunction with the factory-method element to construct beans using static or instance factory methods.
    不仅仅可以为javabean的构造函数使用,同样可以传递参数给类的静态工厂方法作为参数
     -->
    <constructor-arg index="0" type="java.lang.String" value="messageConsumer-%d"/>
</bean>

<!-- 配置java.util.concurrent.ThreadPoolExecutor的线程池 -->
<bean id="mqDictMessageConsumerThreadPoolExector" class="java.util.concurrent.ThreadPoolExecutor"
    lazy-init="true" scope="singleton">
    <constructor-arg index="0" type="int"
        value="$(threadPoolExecutor.corePoolSize:5)" />
    <constructor-arg index="1" type="int"
        value="$(threadPoolExecutor.maximumPoolSize:10)" />
    <constructor-arg index="2" type="long"
        value="$(threadPoolExecutor.keepAliveTime:60)" />
    <constructor-arg index="3" type="java.util.concurrent.TimeUnit"
        value="java.util.concurrent.TimeUnit.SECONDS" />
    <constructor-arg index="4"
        type="java.util.concurrent.BlockingQueue" value="java.util.concurrent.LinkedBlockingQueue" />
    <constructor-arg index="5"
        type="java.util.concurrent.ThreadFactory" ref="threadFactory" />
</bean>

  

 

setting.properties 配置文件

threadPoolExecutor.corePoolSize=10
threadPoolExecutor.maximumPoolSize=20
threadPoolExecutor.keepAliveTime=60

 

 

 

分享到:
评论

相关推荐

    spring线程池ThreadPoolExecutor配置以及FutureTask的使用

    这个类是Spring对Java内置的`java.util.concurrent.ThreadPoolExecutor`的封装,允许开发者在Spring应用上下文中声明式地定义线程池。在本篇文章中,我们将深入探讨`ThreadPoolTaskExecutor`的配置及其使用,并结合`...

    Spring线程池ThreadPoolExecutor配置并且得到任务执行的结果

    在Spring中,我们可以使用ThreadPoolTaskExecutor来配置ThreadPoolExecutor。ThreadPoolTaskExecutor是Spring提供的一种线程池实现,基于ThreadPoolExecutor,它提供了诸如线程池大小、队列大小、线程存活时间等参数...

    maven管理的Spring多线程任务demo

    在Spring中,我们可以使用`ThreadPoolTaskExecutor`,这是Spring对`ThreadPoolExecutor`的封装,提供了更便捷的配置方式。 为了在Spring中使用`ThreadPoolTaskExecutor`,我们需要在配置类中声明一个bean,如下所示...

    Spring Boot 线程池的创建、@Async 配置步骤及注意事项.docx

    本文将详细介绍如何在Spring Boot中创建线程池并配置`@Async`,以及需要注意的一些事项。 首先,我们需要在Spring Boot的主程序类上添加`@EnableAsync`注解,以启用异步方法的支持。例如: ```java import org....

    Spring线程池ThreadPoolTaskExecutor配置详情

    ThreadPoolTaskExecutor的配置主要通过在Spring配置文件中定义一个名为taskExecutor的Bean来实现。下面是一个基本的配置示例: ```xml &lt;bean id="taskExecutor" class="org.springframework.scheduling.concurrent....

    spring 线程池实例

    在Spring配置文件中,我们可以这样定义一个`ThreadPoolTaskExecutor`: ```xml &lt;bean id="taskExecutor" class="org.springframework.scheduled.concurrent.ThreadPoolTaskExecutor"&gt; &lt;!-- 可选的拒绝策略...

    spring线程池(同步、异步).docx

    3. `ThreadPoolTaskExecutor`:这是Spring最常用的线程池实现,它包装了`java.util.concurrent.ThreadPoolExecutor`,支持线程池配置,并且是异步执行任务的。 4. `ConcurrentTaskExecutor`:作为`Executor`接口的...

    Spring小例子项目源码

    2. **ExecutorService和ThreadPoolExecutor**:Java并发框架中的重要工具,可以管理和控制线程池,提高系统资源利用率。 3. **Future和Callable**:Callable接口用于创建带返回值的线程,Future接口用于获取线程...

    Spring3.2.6定时任务+线程池.docx

    ### Spring3.2.6定时任务与线程池配置详解 #### 一、背景介绍 在现代软件开发中,为了提高系统的并发处理能力和资源利用率,往往需要利用到多线程技术来实现定时任务的处理。Spring框架作为Java企业级应用开发中的...

    spring timer

    综上所述,Spring Timer是Spring框架提供的一种强大且灵活的定时任务解决方案,它包括了任务执行和任务调度两大模块,结合cron表达式和注解配置,可以满足各种定时需求。在实际开发中,我们应熟练掌握其使用和配置,...

    关于Spring中@Async注解使用

    为了避免这个问题,Spring 提供了 ThreadPoolTaskExecutor,这个类是对 java.util.concurrent.ThreadPoolExecutor 的包装,提供了自定义配置线程池的功能。 自定义线程池需要了解几个主要的概念,例如核心线程数量...

    Java Spring多线程demo代码

    首先,Spring提供了`ThreadPoolTaskExecutor`,这是一个基于Java的`ThreadPoolExecutor`实现的任务执行器。开发者可以通过配置bean来定制线程池参数,如核心线程数、最大线程数、队列大小等,以适应不同场景下的并发...

    Spring Boot中配置定时任务、线程池与多线程池执行的方法

    在Spring Boot应用中,我们可以利用其提供的功能来配置和管理定时任务、线程池以及多线程池执行。这些配置对于构建高效、可扩展的应用至关重要,尤其是在处理并发和定时任务调度时。 首先,我们来看看如何配置基础...

    使用线程池ThreadPoolExecutor 抓取论坛帖子列表

    `ThreadPoolExecutor`会根据配置动态调整线程数量,避免过度创建线程导致系统资源浪费,同时也能保证任务的有序执行。 为了实现这一功能,我们需要编写一个任务类(通常继承自`Runnable`或`Callable`接口),该类...

    在spring boot中使用java线程池ExecutorService的讲解

    在 Spring Boot 中使用线程池非常简单,我们可以使用 @Configuration 注解创建一个线程池配置类,然后使用 @Bean 注解创建一个线程池实例。 ``` @Configuration public class ThreadPoolConfig { @Bean public ...

    多线程及spring相关面试专题及答案.zip

    2. **Spring Boot**:Spring Boot简化了Spring应用程序的开发,通过自动配置和“起步依赖”使应用快速启动。 3. **Spring MVC**:Spring MVC是Spring框架的一部分,用于构建Web应用程序,提供了模型-视图-控制器的...

    Spring Boot 配置和使用多线程池的实现

    Spring Boot 配置和使用多线程池的实现 Spring Boot 配置和使用多线程池的实现是一种高效且灵活的线程管理机制,它可以帮助开发者在项目中更好地控制和分配线程资源。下面是关于 Spring Boot 配置和使用多线程池的...

    spring_thread_demo.rar

    `ThreadPoolTaskExecutor`是Spring提供的一个线程池实现,它是基于Java的`java.util.concurrent.ThreadPoolExecutor`类。开发者可以通过配置线程池的核心线程数、最大线程数、线程存活时间、工作队列容量等参数,以...

    spring TaskExecutor.docx

    4. **ThreadPoolTaskExecutor**:基于Java 5的ThreadPoolExecutor,是Java 5环境下最常用的实现,允许配置线程池参数。 5. **SimpleThreadPoolTaskExecutor**:基于Quartz的SimpleThreadPool,适合Quartz和其他非...

    spring 微服务相关框架学习。以及记录 jvm 调优 数据监控 并发控制-spring-frame.zip

    在微服务架构中,Spring Cloud提供了一整套解决方案,包括服务发现(Eureka)、配置管理(Config Server)、API网关(Zuul或Gateway)、负载均衡(Ribbon)和服务注册等,这些组件协同工作,构建出高度可扩展和灵活...

Global site tag (gtag.js) - Google Analytics