`
lishaorui
  • 浏览: 149442 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

使用Spring的taskExecutor实现线程池

阅读更多
最近,由于项目里需要用到线程池来提高处理速度,记录一下spring的taskExecutor执行器来实现线程池。

这里省略了Service接口的定义和在applicationContext.xml文件中配置相应的bean(service)。

1、处理器实现类
package com.shine.job;

import java.util.List;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.core.task.TaskExecutor;

import com.shine.service.Service;

/**
 *  处理器接口实现类
 */
public class ProcessorImpl implements Processor {

	// 日志对象
	private static Log logger = LogFactory.getLog(ProcessorImpl.class);
	
	// 执行器
	private TaskExecutor taskExecutor;
	
	// 业务接口
	private Service service;

	public void process() {
		    // 使用多线程处理
			taskExecutor.execute(new Runnable(){
				public void run() {
					try {
					    logger.debug("[Thread "
						+ Thread.currentThread().getId()
						+ " start]");
                        // 业务处理
						service.handle(name);
						logger.debug("[Thread "
						+ Thread.currentThread().getId()
						+ " end]");
					} catch (RuntimeException e) {
						logger.error("Service handle exception",e);
					}
				}
			});
		}
	}
	
	public void setService(Service service) {
		this.service = service;
	}

	public void setTaskExecutor(TaskExecutor taskExecutor) {
		this.taskExecutor = taskExecutor;
	}
	
}


2、applicationContext.xml配置
  <!--  线程池(执行器) --> 
  <task:executor id="taskExecutor" pool-size="1-4" queue-capacity="128" /> 

  <!--  处理接口  --> 
  <bean id="processor" class="com.shine.job.ProcessorImpl">
        <property name="service" ref="service" /> 
        <property name="taskExecutor">
        	<ref bean="taskExecutor" /> 
        </property>
  </bean>


其中:
pool-size="1-4",表示线程池活跃的线程数为1,最大线程数为4;
queue-capacity="128",表示任务队列的最大容量。

PS:关于taskExecutor还有一种配置bean来实现的,其配置的写法和参数与上面基本一致。
分享到:
评论

相关推荐

    征服 Kestrel + XMemcached + Spring TaskExecutor

    通过深入学习Kestrel的配置、管理和监控,掌握XMemcached的使用技巧,以及理解Spring TaskExecutor的线程池管理策略,开发者可以有效地优化应用程序的性能,同时保证系统的可伸缩性和可靠性。在实际项目中,可能还...

    spring TaskExecutor.docx

    Spring的TaskExecutor是Java线程池抽象的一个重要组成部分,它为开发者提供了一种在Spring框架内使用线程池的方式,而无需直接依赖于特定的Java版本或Java EE环境中的线程池实现。TaskExecutor接口的设计使得在不同...

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

    在Spring框架中,线程池的使用是实现并发和异步任务执行的关键工具。线程池的概念源于Java的`java.util.concurrent.ExecutorService`接口,它允许我们管理一组可重用的工作线程,以提高系统效率并减少资源消耗。...

    spring 线程池实例

    在`spring3.0.5_TaskExecutor`这个压缩包中,可能包含了Spring 3.0.5版本关于线程池的示例代码和配置文件,你可以通过研究这些示例来进一步了解如何在实际项目中使用Spring的线程池功能。 总结来说,Spring的线程池...

    Java面试 spring知识点 线程池 面试题

    同时,线程池相关的面试题可能涵盖Spring TaskExecutor,它是Spring提供的异步任务执行框架,支持自定义线程池配置,如核心线程数、最大线程数、队列容量等。 数据库锁是并发控制的重要手段,面试中可能会问到乐观...

    Spring基于线程池的定时任务线挰异常实践

    在Spring框架中,定时任务和线程池是两个非常重要的组件,它们可以帮助我们实现高效的后台任务处理。这篇博文“Spring基于线程池的定时任务线程异常实践”深入探讨了如何在Spring中结合线程池来执行定时任务,并且...

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

    本文详细介绍了如何在Spring3.2.6中配置线程池和定时任务,包括XML配置文件的具体设置以及程序类的实现。通过这种方式,可以有效地管理后台任务的执行,提高系统的并发处理能力。这种配置方式不仅适用于Spring3.2.6...

    Spring提供的线程池支持[借鉴].pdf

    此外,Spring还提供了对任务调度的支持,比如通过`ThreadPoolTaskScheduler`实现基于线程池的定时任务调度,它可以与`TaskExecutor`一起使用,提供灵活的任务调度能力。这使得应用程序能够在指定的时间间隔执行周期...

    Spring Boot利用@Async如何实现异步调用:自定义线程池

    Spring Boot利用@Async实现异步调用:自定义线程池 Spring Boot是一个流行的Java框架,它提供了许多实用的特性来简化应用程序的开发。其中,异步调用是Spring Boot中的一个重要特性,它允许开发者将一些耗时的任务...

    基于Spring中的线程池和定时任务功能解析

    Spring框架还提供了其他的线程池和定时任务执行的实现类,例如ApplicationEventMulticaster、Quartz等,这些实现类都使用TaskExecutor和TaskScheduler作为抽象接口来屏蔽掉底层JDK版本间以及Java EE中的线程池和定时...

    spring-task:Spring TaskExecutor演示

    本篇将深入探讨Spring TaskExecutor的基本概念、使用方法以及相关的实战示例。 1. **TaskExecutor接口** TaskExecutor是Spring提供的一个接口,它定义了一个execute(Runnable task)方法,用于提交一个Runnable任务...

    JDK线程池和Spring线程池的使用实例解析

    JDK线程池和Spring线程池是两种常用的线程池实现,它们都提供了线程池的功能,但它们在使用和配置上有所不同。下面我们将详细介绍JDK线程池和Spring线程池的使用实例解析。 JDK线程池 JDK线程池是Java中的一个内置...

    浅谈Spring @Async异步线程池用法总结

    Spring提供了多种异步线程池的接口类,包括TaskExecutor、SimpleAsyncTaskExecutor、SyncTaskExecutor、ConcurrentTaskExecutor、SimpleThreadPoolTaskExecutor、ThreadPoolTaskExecutor等。其中,...

    kestrel-task-executor:Kestrel + XMemcached + Spring TaskExecutor

    - **Configurations**:配置文件,定义Spring TaskExecutor的参数,如线程池大小、超时时间等,以及Kestrel和XMemcached的连接信息。 - **Testing**:单元测试和集成测试,确保各个组件正确运行和协同工作。 通过...

    Spring Boot 自定义异步线程池的两种方式Demo

    本文将详细介绍两种在Spring Boot中实现自定义异步线程池的方法,并通过具体的Demo进行说明。 ### 方法一:使用`@Async`注解和`ThreadPoolTaskExecutor` 1. **配置类:** 首先,我们需要创建一个配置类,用于定义...

    springmvc配置线程池Executor做多线程并发操作的代码实例

    线程池Executor是Spring框架提供的一种线程池实现,它允许我们在应用程序中创建和管理线程池,以便实现高效的并发处理。 首先,我们需要在Spring的配置文件中添加对线程池Executor的支持。我们可以在...

    Spring实现任务调度.rar

    `ScheduledExecutorService`是Java自带的一个实现,也可以使用Spring的`ConcurrentTaskScheduler`,后者可以与`ThreadPoolTaskExecutor`结合使用。通过`@Scheduled`注解,我们可以很方便地在Spring Bean上定义定时...

    Spring boot注解@Async线程池实例详解

    Spring Boot 提供了 @Async 注解,可以将方法异步化,使得方法的调用者不需要等待方法的执行结果,直接返回,而方法的实际执行将提交给 Spring 的 TaskExecutor 中,由指定的线程池中的线程执行。 2. TaskExecutor...

    spring 任务调度实现代码例子

    这个“spring 任务调度实现代码例子”很可能是包含了一些示例代码,用于演示如何在Spring应用中配置和使用任务调度。下面将详细解释Spring任务调度的关键概念和实现方法。 1. **Spring Task模块** Spring Task是...

    Spring定时调度简单实现源码

    这个"Spring定时调度简单实现源码"很显然是一个关于如何在Spring中配置和使用定时任务的示例代码包。下面我们将深入探讨Spring的定时调度机制以及其核心组件。 Spring的定时任务调度主要依赖于两个关键组件:`Task...

Global site tag (gtag.js) - Google Analytics