@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.mzph.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…