java 带有返回值的异步处理

1、先创建一个线程池

       

        // 创建一个固定大小的线程池ExecutorService executor = Executors.newFixedThreadPool(5);

2、创建一个异步现成执行你所需要执行的业务

CompletableFuture<String> future = CompletableFuture.supplyAsync(() -> {System.out.println(Thread.currentThread().getName() + ":开始执行");try {Thread.sleep(3000); // 模拟耗时操作} catch (InterruptedException e) {Thread.currentThread().interrupt(); // 重新设置中断状态throw new RuntimeException(e);}System.out.println(Thread.currentThread().getName() + ":执行完成");return "Hello, World!"; // 正确地返回结果},executor);

3、异步处理异步业务的返回结果

        future.thenAccept(result -> {System.out.println(Thread.currentThread().getName() + ":开始执行结果处理");System.out.println("获取到的结果是: " + result);System.out.println(Thread.currentThread().getName() + ":执行完成结果处理");});

4、业务结束

整体代码

public static void main(String[] args) {// 创建一个固定大小的线程池ExecutorService executor = Executors.newFixedThreadPool(5);CompletableFuture<String> future = CompletableFuture.supplyAsync(() -> {System.out.println(Thread.currentThread().getName() + ":开始执行");try {Thread.sleep(3000); // 模拟耗时操作} catch (InterruptedException e) {Thread.currentThread().interrupt(); // 重新设置中断状态throw new RuntimeException(e);}System.out.println(Thread.currentThread().getName() + ":执行完成");return "Hello, World!"; // 正确地返回结果},executor);System.out.println("主线程执行完成");future.thenAccept(result -> {System.out.println(Thread.currentThread().getName() + ":开始执行结果处理");System.out.println("获取到的结果是: " + result);System.out.println(Thread.currentThread().getName() + ":执行完成结果处理");});System.out.println("主线程结束");try {Thread.sleep(3000); // 模拟耗时操作} catch (InterruptedException e) {Thread.currentThread().interrupt(); // 重新设置中断状态throw new RuntimeException(e);}// 记得在程序结束时关闭线程池executor.shutdown();}

代码执行结果

主线程执行完成
pool-2-thread-1:开始执行
主线程结束
pool-2-thread-1:执行完成
pool-2-thread-1:开始执行结果处理
获取到的结果是: Hello, World!
pool-2-thread-1:执行完成结果处理

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/30343.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

118.网络游戏逆向分析与漏洞攻防-邮件系统数据分析-邮件管理的界面与功能设计

免责声明&#xff1a;内容仅供学习参考&#xff0c;请合法利用知识&#xff0c;禁止进行违法犯罪活动&#xff01; 如果看不懂、不知道现在做的什么&#xff0c;那就跟着做完看效果&#xff0c;代码看不懂是正常的&#xff0c;只要会抄就行&#xff0c;抄着抄着就能懂了 内容…

visual studio error MSB8008:

新项目编译的时候&#xff0c;可能由于编译器的版本不一致导致的问题。 你的电脑上有两个不同版本的VS&#xff0c;或者你的程序拷贝到别人的电脑上去运行&#xff0c;或者你是从别人那里拷贝来的项目&#xff0c;而你们俩用的VS版本不一样&#xff0c;就会在运行的时候出现这…

初识Redis数据库(通俗易懂版)

Redis&#xff1a;不只是存储那么简单 Redis&#xff08;Remote Dictionary Server&#xff09;是一个开源且高性能的键值&#xff08;key-value&#xff09;存储系统&#xff0c;同时也是内存数据库&#xff0c;常用于缓存、消息队列、会话存储等应用场景。支持字符串&#x…

MyBatis组件的DAO层拦截器

最近老大想对储存到数据库的数据进行加密&#xff0c;不让某表的某几列以明文的形式储存&#xff0c;巧的是这些数据是公司框架写好的&#xff0c;不能直接上代码改。 而业务层对于这张表的数据&#xff0c;应用的地方非常多&#xff0c;从业务侧进行拦截不现实。 所以&#xf…

Java版-剑指offer数据结构与算法 视频教程 下载

Java版-剑指offer数据结构与算法 视频教程 下载 01-数据结构与算法入门基础 clip.mp4 02-clip1.mp4 03-clip2.mp4 04-基础数据结构&#xff1a;数组&链表&#xff08;一&#xff09;.mp4 05基础数据结构&#xff1a;数组&链表&#xff08;二&#xff09;.mp4 06-基…

成都爱尔周进院长提醒毕业生摘镜,术式如何挑

高考完迎来一个悠长假期&#xff0c;考后放松的同时&#xff0c;也有不少同学开始“准备”。 为奔赴梦想&#xff0c;为了理想的专业和学校&#xff0c;不少人决定摘镜。 不少专业有视力要求&#xff0c;且不同专业方向的要求各有不同。我们先来看看有视力要求的专业有哪些&am…

数据集制作——语义分割前png、jpg格式标签图转yolo格式.txt文件(附代码)

&#x1f4aa; 专业从事且热爱图像处理&#xff0c;图像处理专栏更新如下&#x1f447;&#xff1a; &#x1f4dd;《图像去噪》 &#x1f4dd;《超分辨率重建》 &#x1f4dd;《语义分割》 &#x1f4dd;《风格迁移》 &#x1f4dd;《目标检测》 &#x1f4dd;《暗光增强》 &a…

从0开始C++(二):类、对象、封装

目录 类&对象的概念 类的内容 对象的创建 ● 栈内存对象 ● 堆内存对象 封装 类&对象的概念 类和对象是一个比较抽象的概念&#xff0c;这里直接用一个实例方便理解。 类&#xff1a;类是一个抽象的概念&#xff0c;用来描述同一类对象的特点&#xff08;比如&am…

第九届信也科技杯全球AI算法大赛——语音深度鉴伪识别参赛A榜 0.968961分

遗憾没有进复赛&#xff0c;只是第41名。先贴个A榜的成绩。A榜的前三十名晋级&#xff0c;个个都是99分的大佬&#xff0c;但是B榜的成绩就有点低了&#xff0c;应该是数据不同源的问题&#xff0c;第一名0.78分。官网链接&#xff1a;语音深度鉴伪识别 官方baselin:https://g…

Springboot 权限认证框架 -- SA-Token 简介(一)

引言 现今的软件开发中&#xff0c;权限认证与访问控制是每一个应用都必不可少的功能。SA-Token是一个简单、安全、易用的权限认证框架&#xff0c;它主要解决登录认证、权限认证、Session会话、单点登录等功能。SA-Token以其轻量级、零学习成本的特点&#xff0c;迅速赢得了开…

Java 网关进程在向驱动程序发送其端口号之前退出

java gateway process exited before sending the driver its port number #248TOC Spark项目 这个是远程调试的一个Spark项目&#xff0c;首先要保证 Spark正确安装&#xff0c;配置好环境变量&#xff0c;这是前提。 可能的问题 Java 网关进程是 Apache Spark 的一个关键…

数组的常用方法

1.Array.map() 此方法是将数组中的每个元素调用一个提供的函数&#xff0c;结果作为一个新的数组返回&#xff0c;并没有改变原来的数组 let arr [1, 2, 3, 4, 5]; let newArr arr.map(x > x * 2); //arr [1, 2, 3, 4, 5] 原数组保持不变 //newArr [2, 4, 6, 8, 10] …

Linux mongodb安装及简单使用

说明&#xff1a;本文章主要是对mongodb的单击安装 1.创建文件夹&#xff0c;准备安装包 cd /user/local mkdir tools 2.解压mongodb包 mkdir mongodb tar -xvf mongodb-linux-x86_64-rhel70-5.0.11.tgz -C mongodb 3.进入解压目录 cd mongodb cd mongodb-linux-x86_64-…

emm, ComfyUI的作者从Stability.AI离职了

&#x1f356;背景 今天在更新ComfyUI的过程中&#xff0c;看到Manager中有这样一段描述&#xff1a; 嗯&#xff1f;做了新的官方网站&#xff1f;然后开始新篇章&#xff1f; 难道说ComfyUI的作者从Stability.AI离职了&#xff1f; 赶紧点开链接看了下&#xff0c;emm&…

24.bytebuf创建

1.byteBuf创建方法 2.自动动态扩容的 package com.xkj.bound;import io.netty.buffer.ByteBuf; import io.netty.buffer.ByteBufAllocator; import lombok.extern.slf4j.Slf4j;@Slf4j public class TestByteBuf {public static void main(String[] args) {//bytebuf可以不指定…

Java集合框架源码分析:LinkedList

文章目录 一、LinkedList特性二、LinkedList底层数据结构三、LinkedList继承关系参考&#xff1a; 一、LinkedList特性 特性描述是否允许为空允许是否允许重复数据允许是否有序有序是否线程安全非线程安全 二、LinkedList底层数据结构 LinkedList同时实现了List接口和Deque接…

基于PLC的全自动洗衣机控制系统课设

一、设计题目 1.1课题内容 根据设计参数和控制要求&#xff0c;设计一全自动洗衣机&#xff0c;画出其运行框图及梯形图控制程序的编制&#xff0c;并画出硬件接线图。 1.2设计参数 1.3控制要求 &#xff08;1&#xff09;按下启动按扭及水位选择开关&#xff0c;开始进水直…

object类教程

Python object 类教程 在 Python 中&#xff0c;object 是所有类的基类。所有 Python 类都隐式或显式地继承自 object。理解 object 类是理解 Python 面向对象编程&#xff08;OOP&#xff09;的关键。它为所有类提供了一些基本的方法和属性&#xff0c;并定义了类的行为和实例…

「51媒体-年中大促」天津有哪些媒体资源-媒体宣传服务公司

传媒如春雨&#xff0c;润物细无声&#xff0c;大家好&#xff0c;我是51媒体网胡老师。 天津的媒体资源相当丰富&#xff0c;涵盖了报纸、电视、广播、新闻门户网站、央媒驻天津机构、视频媒体以及全国媒体资源等多个方面。以下是详细的媒体资源分类和具体信息&#xff1a; 一…

嵌入式web 服务器boa的编译和移植

编译环境&#xff1a;虚拟机 ubuntu 18.04 目标开发板&#xff1a;飞凌OKA40i-C开发板&#xff0c; Linux3.10 操作系统 开发板本身已经移植了boa服务器&#xff0c;但是在使用过程中发现POST方法传输大文件时对数据量有限制&#xff0c;超过1M字节就无法传输&#xff0c;这是…