@Async join

直接貼代碼

自定義線程池

package com.xh.lawsuit.rest.modular.example;
?
?
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
?
import java.util.concurrent.Executor;
?
@Configuration
public class GlobalThreadPool {
? ? @Bean
? ? public Executor taskExecutor() {
? ? ? ? int cpuCount = Runtime.getRuntime().availableProcessors() ;
?
? ? ? ? int coreThreadSize = cpuCount << 1;
?
? ? ? ? int maxThreadSize = cpuCount << 4;
? ? ? ? ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
? ? ? ? executor.setCorePoolSize(coreThreadSize);
? ? ? ? executor.setMaxPoolSize(maxThreadSize);
? ? ? ? executor.setQueueCapacity(5000);
? ? ? ? executor.setThreadNamePrefix("Java同學會-");
? ? ? ? executor.initialize();
? ? ? ? return executor;
? ? }
}
異步的service

package com.xh.lawsuit.rest.modular.example;
?
import lombok.extern.slf4j.Slf4j;
import org.springframework.scheduling.annotation.Async;
import org.springframework.scheduling.annotation.EnableAsync;
import org.springframework.stereotype.Component;
import org.springframework.stereotype.Service;
?
import java.util.concurrent.CompletableFuture;
?
/**
?* @author felix
?* @data 2020/1/19 0019 16:55
?*/
@EnableAsync
@Service
@Slf4j
public class BusyService {
? ? @Async
? ? public CompletableFuture<String> busyMethod(String name) throws InterruptedException {
? ? ? ? log.info(name);
? ? ? ? String s = "Hello,"+name+"!";
? ? ? ? //模擬耗時操作,5秒
? ? ? ? Thread.sleep(5000);
? ? ? ? return CompletableFuture.completedFuture(s);
? ? }
}
測試類測試程序

@Test
? ? public void test() throws InterruptedException, ExecutionException {
? ? ? ? long start = System.currentTimeMillis();
? ? ? ? CompletableFuture<String> jane = busyService.busyMethod("Jane");
? ? ? ? CompletableFuture<String> allen = busyService.busyMethod("Allen");
? ? ? ? CompletableFuture<String> james = busyService.busyMethod("James");
? ? ? ? CompletableFuture.allOf(jane,allen,james).join();
? ? ? ? log.info(jane.get());
? ? ? ? log.info(allen.get());
? ? ? ? log.info(james.get());
? ? ? ? long end = System.currentTimeMillis();
? ? ? ? log.info("最終耗時="+(end-start));
? ? }
輸出結果,時間為5010毫秒,異步執行成功


————————————————
版權聲明:本文為CSDN博主「leigelg」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/leigelg/article/details/104043899

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/386465.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/386465.shtml
英文地址,請注明出處:http://en.pswp.cn/news/386465.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

我們究竟還要學習哪些Android知識?完整版開放下載

前言 移動研發火熱不停&#xff0c;越來越多人開始學習 android 開發。但很多人感覺入門容易成長很難&#xff0c;對未來比較迷茫&#xff0c;不知道自己技能該怎么提升&#xff0c;到達下一階段需要補充哪些內容。市面上也多是談論知識圖譜&#xff0c;缺少體系和成長節奏感&a…

ELK7.8.1的Docker搭建過程

在linux下首先在目錄準備文件 首先說明&#xff0c;我的電腦宿主機的IP是192.168.1.5 為es準備文件 mkdir -p /opt/elk7/es cd /opt/elk7/es #創建對應的文件夾 數據 / 日志 / 配置 mkdir conf data logs #授權 chmod 777 -R conf data logs然后進入到/opt/elk7/es/conf下 …

如何使用git創建項目,創建分支

git config -global user.name "Your name" git config -global user.email "youexample.com" 建立一個存放工程的文件夾 git init命令用于初始化當前所在目錄的這個項目 會創建一個隱藏文件 .git 創建 main.c 文件 創建 .gitignore文件&#xff0c;忽略…

我們究竟還要學習哪些Android知識?附贈課程+題庫

2021新的一年&#xff0c;開啟新的征程&#xff0c;回顧2020&#xff0c;真是太“南”了。 從年初各大廠裁員&#xff0c;竟然成為一件理所應當的事情&#xff0c;到四月份 GitHub 上“996.ICU” 引起了大家的共鳴。即使我們兢兢業業“996”&#xff0c;但依舊難以抵御 35 歲時…

WINDOWS上KAFKA運行環境安裝

WINDOWS上KAFKA運行環境安裝 1. 安裝JDK 1.1 安裝文件&#xff1a;http://www.oracle.com/technetwork/java/javase/downloads/index.html 下載JDK 1.2 安裝完成后需要添加以下的環境變量&#xff08;右鍵點擊“我的電腦” -> "高級系統設置" -> "環境變…

架構師成長之路-個人學習經驗分享(公司研發峰會演講ppt)

前天在公司分享了一些學習經驗,園子中感興趣可以看看。建議大家使用pptPlex來看這個片子。 首先從我在成長中不同階段的工作和體會來談不同階段的學習內容談起&#xff0c;為了做好這些必修課&#xff0c;我會對知識&#xff0b;實踐&#xff0b;思考&#xff0b;心態&#xff…

我憑什么拿到了阿里、騰訊、今日頭條3家大廠offer?這原因我服了

前言 從畢業到現在面試也就那么幾家公司&#xff0c;單前幾次都比較順利&#xff0c;在面到第三家時都給到了我offer&#xff01;前面兩次找工作&#xff0c;沒考慮到以后需要什么&#xff0c;自己的對未來的規劃是什么&#xff0c;只要有份工作&#xff0c;工資符合自己的要求…

kafka logstash elk

前言 企業開發中&#xff0c;一個應用會有多個測試環境&#xff0c;于是會有一個專門的服務器做日志收集&#xff0c;那就需要保存日志和應用隔離&#xff0c;這里就牽涉到異步存寫日志的問題&#xff0c;異步消息隊列選取kafka&#xff0c;高性能&#xff0c;日志消息消費我們…

模板概述

模板&#xff0c;按建筑學的說法是&#xff1a;施工時澆筑混凝土用的成組模型板&#xff1b;而模板之詞&#xff0c;恐怕可釋之為模型之板&#xff0c;顧名思義&#xff0c;模板為一套規定好了規范準則的樣板。既然為樣板&#xff0c;自然是可被多方使用&#xff1b;而準則既已…

我憑什么拿到了阿里、騰訊、今日頭條3家大廠offer?通用流行框架大全

前言 從畢業到現在面試也就那么幾家公司&#xff0c;單前幾次都比較順利&#xff0c;在面到第三家時都給到了我offer&#xff01;前面兩次找工作&#xff0c;沒考慮到以后需要什么&#xff0c;自己的對未來的規劃是什么&#xff0c;只要有份工作&#xff0c;工資符合自己的要求…

解決讀寫分離過期讀的幾個方案

mysql讀寫分離的坑 讀寫分離的主要目標是分攤主庫的壓力&#xff0c;由客戶端選擇后端數據庫進行查詢。還有種架構就是在MYSQL和客戶端之間有一個中間代理層proxy&#xff0c;客戶端之連接proxy&#xff0c;由proxy根據請求類型和上下文決定請求的分發路由。 客戶端直連方案&am…

Feign接口 多線程問題

Spring Cloud Feign傳輸Header&#xff0c;并保證多線程情況下也適用 一、現象 微服務在生產中&#xff0c;常遇到需要把 header 傳遞到下一子服務的情況&#xff08;如服務A訪問服務B的接口&#xff0c;需要傳遞header&#xff09;&#xff0c;網上大多數的方案是實現 Request…

serial port 的操作

import serial①選擇設備serserial.Serial("/dev/ttyUSB0",9600,timeout0.5) #使用USB連接串行口serserial.Serial("/dev/ttyAMA0",9600,timeout0.5) #使用樹莓派的GPIO口連接串行口serserial.Serial(1,9600,timeout0.5)#winsows系統使用com1口連接串行口s…

我在華為做Android外包的真實經歷!吊打面試官系列!

導語 本部分內容是關于Android進階的一些知識總結&#xff0c;涉及到的知識點比較雜&#xff0c;不過都是面試中幾乎常問的知識點&#xff0c;也是加分的點。 關于這部分內容&#xff0c;可能需要有一些具體的項目實踐。在面試的過程中&#xff0c;結合具體自身實踐經歷&…

logstash windows

最新在研究elastic stack (elk) &#xff1a; logstash 安裝&#xff0c;下載最新版本的logstash: 點擊打開鏈接 解壓到磁盤根目錄下&#xff1a;在logstash>bin 1、目錄下創建&#xff1a;logstash.conf 2、輸入內容: # Sample Logstash configuration for creating …

H3C端口狀態

轉載于:https://www.cnblogs.com/fanweisheng/p/11153315.html

還有人不知道什么是AndroidX的嗎?文末領取面試資料

談起Android框架體系架構&#xff0c;我先提個問&#xff1a;什么是Android框架體系架構 &#xff1f; Android系統構架是安卓系統的體系結構&#xff0c;android的系統架構和其操作系統一樣&#xff0c;采用了分層的架構&#xff0c;共分為四層&#xff0c;從高到低分別是And…

zookeeper+kafka+logstash+elasticsearc+kibana

研究背景 1、之所以選用kafka是因為量起來的話單臺logstash的抗壓能力比較差 2、為了解決整個鏈路查詢的問題&#xff0c;多個Feign傳層的話&#xff0c;可以按照一個ID進行穿層&#xff0c;所以采用logback的MDC進行對唯一標識存儲并且在Feign的調用鏈放在Header里&#xff…

還沒吃透內存緩存LruCache實現原理的看這篇文章,跳槽薪資翻倍

目前情況&#xff1a;10屆某民辦大學本科生&#xff0c;實際接觸Android年限6年多了&#xff0c;工作年限五年半&#xff08;注意&#xff0c;我說的是工作年限&#xff0c;不是工作經驗&#xff09;&#xff0c;今年1月份裸辭后歇了大半年&#xff0c;經常一周也收不到幾個off…

利用 Docker 搭建單機的 Cloudera CDH 以及使用實踐

利用 Docker 搭建單機的 Cloudera CDH 以及使用實踐 想用 CDH 大禮包&#xff0c;于是先在 Mac 上和 Centos7.4 上分別搞個了單機的測試用。其實操作的流和使用到的命令差不多就一并說了: 首先前往官方下載包&#xff1a; https://www.cloudera.com/downloads/quickstart_vm…