zoukankan      html  css  js  c++  java
  • (办公)访问其他系统接口httpClient,异步访问

      访问其他系统接口httpClient,但是都是同步的,同步意味当前线程是阻塞的,只有本次请求完成后才能进行下一次请求;异步意味着所有的请求可以同时塞入缓冲区,不阻塞当前的线程;

         httpClient请求,访问其他系统可能无响应,锁死,访问请求上线种种问题,这些问题就像苍蝇嗡嗡嗡的在你耳边,那么解决他可以设置超时时间,但是访问一个接口将近1分钟,这个是不应该的,所以还是要异步请求其他系统的接口,我们可以使用多线程来做,建立一个线程池,只指定10个线程,然后调用方法。(好主意)

       下面是举个springmvc的例子:

        1.往springmvc里添加线程池

    application.xml里添加
     xmlns:task="http://www.springframework.org/schema/task"
    http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task.xsd
    <bean id="taskExecutor" class="org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor">
            <!-- 核心线程数 -->
            <property name="corePoolSize" value="10" />
            <!-- 最大线程数 -->
            <property name="maxPoolSize" value="10" />
            <!-- 队列最大长度 -->
            <property name="queueCapacity" value="500" />
            <!-- 线程池维护线程所允许的空闲时间,默认为60s -->
            <property name="keepAliveSeconds" value="200" />
        </bean>

         2.操作:

    //自定义线程池:
     @Resource
    private TaskExecutor taskExecutor;
    try {
          taskExecutor.execute(new Runnable() {
            public void run() {
              //这里编写处理业务代码
    //注意方法传递参数的时候,尽量使用基本类型的值。
    } }); } catch (Exception e) { e.printStackTrace(); }

  • 相关阅读:
    HDOJ2003求绝对值
    HDOJ2002计算球体积
    jsp input 限制只可输入时分秒 My97DatePicker
    BigDecimal格式化
    官方 Animator 例子解析 Animator.MatchTarget
    LoadAssetAtPath 与 Load 的区别
    SQLite 学习流水账笔记
    Unity3D Development模式下的一个小问题
    Sqlitekit 封装管理
    PhotoshopCS4轻松将PSD分层导出为Png分层
  • 原文地址:https://www.cnblogs.com/historylyt/p/11140019.html
Copyright © 2011-2022 走看看