`
wiselyman
  • 浏览: 2094084 次
  • 性别: Icon_minigender_1
  • 来自: 合肥
博客专栏
Group-logo
点睛Spring4.1
浏览量:82349
74ae1471-94c5-3ae2-b227-779326b57435
点睛Spring MVC4...
浏览量:130807
社区版块
存档分类
最新评论

15点睛Spring4.1-TaskExecutor

 
阅读更多

15.1 TaskExecutor

  • spring的TaskExecutor为在spring环境下进行并发的多线程编程提供了支持;
  • 使用ThreadPoolTaskExecutor可实现一个基于线程池的TaskExecutor;
  • 使用@EnableAsync开启异步任务支持;
  • 使用@Async注解方法是异步方法;

15.2 示例

15.2.1 声明taskExecutor

package com.wisely.task.executor;

import java.util.concurrent.Executor;

import org.springframework.aop.interceptor.AsyncUncaughtExceptionHandler;
import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.annotation.AsyncConfigurer;
import org.springframework.scheduling.annotation.EnableAsync;
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;

@Configuration
@EnableAsync
public class DemoConfig implements AsyncConfigurer{
    public Executor getAsyncExecutor() {
        ThreadPoolTaskExecutor taskExecutor = new ThreadPoolTaskExecutor();
        taskExecutor.setCorePoolSize(5);
        taskExecutor.setMaxPoolSize(10);
        taskExecutor.setQueueCapacity(25);
        taskExecutor.initialize();
        return taskExecutor;
    }

    public AsyncUncaughtExceptionHandler getAsyncUncaughtExceptionHandler() {
        return null;
    }

}

15.2.2 异步任务实现代码

package com.wisely.task.executor;

import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Component;

@Component
public class DemoAsyncTask {
    @Async
    public void executeAsyncTask(Integer i){
        System.out.println("执行异步任务:"+i);
    }

    @Async
    public void executeAsyncTaskPlus(Integer i){
        System.out.println("执行异步任务+1:"+(i+1);
    }
}

15.2.3 测试

package com.wisely.task.executor;

import org.springframework.context.annotation.AnnotationConfigApplicationContext;

public class Main {

    public static void main(String[] args) {
        AnnotationConfigApplicationContext context =
                new AnnotationConfigApplicationContext("com.wisely.task.executor");
        DemoAsyncTask task = context.getBean(DemoAsyncTask.class);
        for(int i =0 ;i<10;i++){
            task.executeAsyncTask(i);
            task.executeAsyncTaskPlus(i);
        }
        context.close();

    }


}

输出结果(结果是并发执行而不是顺序执行的):

执行异步任务+1:10
执行异步任务:6
执行异步任务:4
执行异步任务+1:7
执行异步任务:3
执行异步任务:1
执行异步任务:5
执行异步任务:7
执行异步任务+1:8
执行异步任务:8
执行异步任务+1:9
执行异步任务:9
执行异步任务+1:1
执行异步任务:0
执行异步任务+1:2
执行异步任务+1:3
执行异步任务:2
执行异步任务+1:4
执行异步任务+1:5
执行异步任务+1:6
 

新书推荐《JavaEE开发的颠覆者: Spring Boot实战》,涵盖Spring 4.x、Spring MVC 4.x、Spring Boot企业开发实战。

 

京东地址:http://item.jd.com/11894632.html

当当地址:http://product.dangdang.com/23926195.html

亚马逊地址:http://www.amazon.cn/图书/dp/B01D5ZBFUK/ref=zg_bsnr_663834051_6 

淘宝地址:https://item.taobao.com/item.htm?id=528426235744&ns=1&abbucket=8#detail

 

 

 

或自己在京东、淘宝、亚马逊、当当、互动出版社搜索自选。

 


0
0
分享到:
评论
1 楼 高桌子矮板凳 2015-11-30  
博主你好。请教个问题,在执行Context close()之前,如何释放ThreadPoolAsyncTask?

相关推荐

    spring-javaconfig-examples

    spring-taskexecutor-javaconfig:使用任务执行器的示例 spring-boot-basic:将 spring-logback-javaconfig 转换为带有可执行 war 的基本 spring boot 应用程序,可以通过“java -jar”运行或部署到 tomc

    spring-framework-4.3.2.RELEASE-dist

    8. **异步处理与任务调度**:Spring的TaskExecutor和ThreadPoolTaskExecutor接口提供了异步处理能力,而TaskScheduler则用于计划和执行周期性任务。 9. **WebFlux**:虽然在4.3.2版本中WebFlux尚未引入,但后续版本...

    mybatis-spring-1.0.1-bundle mybatis spring 官方下载

    结合 Spring 的 TaskExecutor,MyBatis-Spring 允许你以异步方式执行数据库操作。通过 `SqlSessionCallback` 或 `SqlSessionRunnable`,你可以编写回调代码来执行 SQL 查询,并在后台线程中运行。 7. **整合测试**...

    spring-task:Spring TaskExecutor演示

    Spring TaskExecutor是Spring框架中的一个核心组件,它提供了一种在后台执行任务的机制,使得开发者可以方便地异步处理任务,提高应用的性能和响应速度。本篇将深入探讨Spring TaskExecutor的基本概念、使用方法以及...

    最新版spring-framework-4.3.11.RELEASE-dist完整包

    7. **异步处理与任务调度**:Spring Framework 4.3.x 包含了对异步方法执行和任务调度的支持,可以通过Spring的TaskExecutor和TaskScheduler接口实现。 下载并解压"spring-framework-4.3.11.RELEASE"压缩包后,你...

    spring TaskExecutor.docx

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

    spring-batch分区处理示例

    3. **TaskExecutor**:Spring Batch支持多种类型的`TaskExecutor`,如SimpleAsyncTaskExecutor(基于线程池的异步执行)或ThreadPoolTaskExecutor(自定义线程池),用于并行执行子任务。 4. **Step实现**:每个...

    spring-framework-3.0.5-projects.rar

    2. **AOP(Aspect-Oriented Programming,面向切面编程)**:Spring的AOP模块使得在程序中插入横切关注点变得简单。通过切面,可以实现如日志记录、事务管理等功能。示例将展示如何定义切点、通知以及如何创建自定义...

    spring-framework-3.0.0.M2 javadoc-api

    Spring AOP支持在不修改源码的情况下,对业务逻辑进行横切关注点(如日志、事务管理)的插入。3.0.0.M2版的JavaDoc API详尽解释了切面、通知、切点和织入的概念,以及如何创建自定义的AOP代理。 4. **Spring MVC**...

    spring源码阅读——1.spring-core-3.2.9

    Spring提供了TaskExecutor和Scheduler接口,可以方便地集成Quartz或Spring的SimpleTrigger,实现后台任务的执行。 7. **其他工具类**:除了以上主要组件,Spring Core还包含了大量实用工具类,如IO操作、字符串处理...

    Spring-Reference_zh_CN(Spring中文参考手册)

    7.2. Spring中的切入点API 7.2.1. 概念 7.2.2. 切入点实施 7.2.3. AspectJ切入点表达式 7.2.4. 便利的切入点实现 7.2.4.1. 静态切入点 7.2.4.2. 动态切入点 7.2.5. 切入点的基类 7.2.6. 自定义切入点 7.3. Spring的...

    spring-framework-3.2.x.zip

    下面,我们将深入探讨Spring Framework 3.2.x中的核心知识点,以及如何利用这些特性进行高效开发。 一、依赖注入(Dependency Injection,DI) Spring的核心特性之一就是依赖注入,它允许开发者通过声明式的方式...

    spring-boot-async-test.zip

    为了确保异步方法的正确执行,我们需要配置一个`TaskExecutor`,Spring Boot默认会自动配置一个简单的线程池。 接下来,我们转向有返回值的异步请求。这种类型的异步请求适用于需要从异步操作中获取结果的情况。在...

    Spring-task定时任务

    在Spring的配置文件中,我们需要声明一个`TaskExecutor`,这将是执行任务的组件: ```xml &lt;task:executor id="myExecutor" pool-size="5"/&gt; ``` 2. **配置任务调度器** 接下来,配置`TaskScheduler`,用于调度...

    官方原版源码 spring-framework-4.3.29.RELEASE.zip

    `org.springframework.scheduling`包下的`TaskExecutor`和`TaskScheduler`接口用于异步任务处理,而`org.springframework.mail`包提供了邮件发送的功能。`Cache`包则提供了缓存抽象,如基于` Ehcache`和`Redis`的...

    征服 Kestrel + XMemcached + Spring TaskExecutor

    标题中的“征服 Kestrel + XMemcached + Spring TaskExecutor”揭示了本次讨论的核心内容,涉及到三个关键的技术组件:Kestrel、XMemcached以及Spring的TaskExecutor。这些技术都是在构建高性能、可扩展的分布式系统...

    spring定时任务关键jar包(齐全)

    `spring-context-support.jar`是Spring框架对Quartz和Commons JCR等第三方调度库的支持,同时也包含Spring自己的`TaskExecutor`和`TaskScheduler`接口,用于实现异步任务和定时任务。 1. **Spring TaskExecutor**: ...

    spring-timer-quartz.zip_namegnd_spring定时任务

    其中,`TaskScheduler`和`TaskExecutor`是两个核心接口,分别用于异步执行周期性任务和一次性任务。然而,如果需要更复杂的定时任务调度,如基于Cron表达式的定时,Spring推荐使用第三方的调度库,比如Quartz。 ...

    spring-android-1.0.0.M3

    5. **任务调度器(Scheduler)**:Spring for Android包含`TaskExecutor`接口和`ThreadPoolTaskExecutor`实现,提供了一种线程池管理的方式,帮助开发者优雅地执行异步任务,改善UI的响应性能,同时避免资源浪费。...

    hands-high-performance-spring-5

    《Hands High Performance Spring 5》是一本专注于提升Spring框架应用性能的专业书籍,旨在帮助开发者深入理解和优化Spring 5的应用性能。Spring作为Java生态系统中的核心框架,其高效运行和优化是企业级开发中不可...

Global site tag (gtag.js) - Google Analytics