zoukankan      html  css  js  c++  java
  • ThreadPoolTaskExecutor异步线程池

    一、在spring配置文件中配置

    <!-- 异步线程池 -->  
        <bean id="threadPool" class="org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor">  
          <!-- 核心线程数  -->  
          <property name="corePoolSize" value="3" />  
          <!-- 最大线程数 -->  
          <property name="maxPoolSize" value="20" />  
          <!-- 队列最大长度 >=mainExecutor.maxSize -->  
          <property name="queueCapacity" value="1000" />  
          <!-- 线程池维护线程所允许的空闲时间 -->  
          <property name="keepAliveSeconds" value="300" />  
          <!-- 线程池对拒绝任务(无线程可用)的处理策略 -->  
          <property name="rejectedExecutionHandler">  
            <bean class="java.util.concurrent.ThreadPoolExecutor$CallerRunsPolicy" />  
          </property>  
        </bean>

    二、在service类中注入
    @Autowired
    private ThreadPoolTaskExecutor threadPool;

    三、service方法中使用

    public void doSomething(){
        threadPool.execute(new Runnable() {
    
                @Override
                public void run() {
                    //异步执行耗时的业务任务
                }
            });
    }

    完成


    备注:如果要想得到耗时任务的返回结果可以如下使用:

    String resp="";
    Future<String> task = threadPool.submit(new Callable<String>(){
    
                @Override
                public String call() throws Exception {
                    String callbackResp = HttpUtils.post(Url, params, "utf-8");
                    return callbackResp;
                }
            });
            try {   
            //注意task.get()会阻塞,直到返回数据为止,所以一般这样用法很少用
            resp=task.get();
            } catch (InterruptedException e) {
                e.printStackTrace();
            } catch (ExecutionException e) {
                e.printStackTrace();
            }
    
  • 相关阅读:
    DbUtils类基本使用
    【struts2】ActionContext与ServletActionContext
    Eclipse 菜单---Eclipse教程第04课
    Eclipse 窗口说明---Eclipse教程第03课
    Eclipse 修改字符集---Eclipse教程第02课
    Java 开发环境配置
    Eclipse 安装(Neon 版本2016年)---Eclipse教程第01课
    eclipse中link方式安装插件
    linux 源码安装mysql 5.5
    shell执行mysql命令
  • 原文地址:https://www.cnblogs.com/hzcya1995/p/13310657.html
Copyright © 2011-2022 走看看