91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么在SpringBoot中異步調用方法并接收返回值

發布時間:2021-05-21 16:26:24 來源:億速云 閱讀:427 作者:Leah 欄目:編程語言

怎么在SpringBoot中異步調用方法并接收返回值?很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。

步驟1:配置線程池,添加@Configuration和@EnableAsync注解

@Configuration
@EnableAsync
public class ExecutorConfig {
 
 
  /**
   * 線程池
   *
   * @return
   */
  @Bean(name = "asyncExecutor")
  public Executor asyncExecutor() {
    ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
    executor.setCorePoolSize(10);
    executor.setMaxPoolSize(15);
    executor.setQueueCapacity(25);
    executor.setKeepAliveSeconds(200);
    executor.setThreadNamePrefix("async-");
    executor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy());
    // 等待所有任務都完成再繼續銷毀其他的Bean
    executor.setWaitForTasksToCompleteOnShutdown(true);
    // 線程池中任務的等待時間,如果超過這個時候還沒有銷毀就強制銷毀,以確保應用最后能夠被關閉,而不是阻塞住
    executor.setAwaitTerminationSeconds(60);
    executor.initialize();
    return executor;
  }
 
 
}

步驟2:定義方法A,方法B,方法C,方法D

@Service
public class AsyncService {
 
  @Async("asyncExecutor")
  public Future<Integer> methodB(){
    try{
      Thread.sleep(1000);
    } catch (Exception e) {
      e.printStackTrace();
    }
    return new AsyncResult<>(1);
  }
 
  @Async("asyncExecutor")
  public Future<Integer> methodC(){
    try{
      Thread.sleep(2000);
    } catch (Exception e) {
      e.printStackTrace();
    }
    return new AsyncResult<>(2);
  }
 
  @Async("asyncExecutor")
  public Future<Integer> methodD(){
    try{
      Thread.sleep(3000);
    } catch (Exception e) {
      e.printStackTrace();
    }
    return new AsyncResult<>(3);
  }
}
@GetMapping("test")
  public Integer methodA() throws Exception{
    long start = System.currentTimeMillis();
    Future<Integer> future1 = asyncService.methodB();
    Future<Integer> future2 = asyncService.methodC();
    Future<Integer> future3 = asyncService.methodD();
    Integer x = future1.get();
    Integer y = future2.get();
    Integer z = future3.get();
    long end = System.currentTimeMillis();
    System.out.println("耗時:" + (end - start));
    return x + y +z;
  }
}

結果:

怎么在SpringBoot中異步調用方法并接收返回值

怎么在SpringBoot中異步調用方法并接收返回值

springboot是什么

springboot一種全新的編程規范,其設計目的是用來簡化新Spring應用的初始搭建以及開發過程,SpringBoot也是一個服務于框架的框架,服務范圍是簡化配置文件。

看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業資訊頻道,感謝您對億速云的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

玉田县| 灵川县| 湟中县| 西城区| 重庆市| 孟村| 叶城县| 通州区| 南和县| 红桥区| 增城市| 军事| 景德镇市| 托克托县| 香格里拉县| 谷城县| 元谋县| 舒兰市| 宣城市| 鹰潭市| 汉寿县| 眉山市| 宽甸| 凤庆县| 江津市| 张家界市| 丁青县| 大荔县| 永善县| 永城市| 绍兴市| 屯留县| 巴林左旗| 怀柔区| 合江县| 永修县| 墨玉县| 漳浦县| 司法| 平湖市| 北流市|