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();
            }
    
  • 相关阅读:
    在peoplecode中直接调用SQR
    想起了李雷和韩梅梅
    结婚两周年纪念
    Unix Command Summary
    在PeopleSoft中如何隐藏菜单,导航栏,以及其他定制化链接
    那些朋友们
    整天工作的人为何当不了富翁
    ActiveX简单介绍
    SQL UNION
    Java程序设计问答大全(一)
  • 原文地址:https://www.cnblogs.com/hzcya1995/p/13310657.html
Copyright © 2011-2022 走看看