怎么优雅的在主线程获取子线程的返回值
今天面试被面试官问道怎么自己实现主线程获取到子线程的返回值,且要优雅不能使用静态变量
方法一:使用FutureTask和Callable来实现
class Test{public static void main(String[] args) throws Exception {FutureTask<String> futureTask = new FutureTask<String>(new Callable<String>() {@Overridepublic String call() throws Exception {System.out.println("准备返回数据");return "张三丰";}});// 将任务传递给子线程去执行Thread thread = new Thread(futureTask);thread.start();String s = futureTask.get();System.out.println(s);}
}方式二:通过在runnable的实现类里面编写有返回值的方法之后阻塞
主线程等待子线程执行结束后调用返回值的方法来获取值
class Test{public static void main(String[] args) throws Exception {runnableTest runnableTest = new runnableTest();Thread thread = new Thread(runnableTest);thread.start();// 等待子线程执行完毕阻塞一下thread.join();System.out.println(runnableTest.returnMethod());}
}class runnableTest implements Runnable{@Overridepublic void run() {System.out.println("这就是爱情");}public String returnMethod(){return "爱你妈卖麻花情";}
}方式三 通过CompletableFuture的supplyAsync来异步执行并且获取返回值
public static void main(String[] args) throws ExecutionException, InterruptedException {CompletableFuture future = CompletableFuture.supplyAsync(() -> "爱你妈卖麻花情");System.out.println(future.get());
}
怎么优雅的在主线程获取子线程的返回值相关推荐
- java 获取子线程_Java 主线程获取子线程返回结果
1.自定义 package com.jgyang.com; public class MySyncThreadTest { public static void main(String[] args) ...
- 【多线程】学习记录七种主线程等待子线程结束之后在执行的方法
最近遇到一个问题需要主线程等待所有的子线程结束,才能开始执行,统计所有的子线程执行结果,返回,网上翻阅各种资料,最后记录一下,找到七种方案 第一种:while循环 对于"等待所有的子线程结束 ...
- android子线程没有运行完,android假如主线程依赖子线程A的执行结果,如何让A执行完成,之后主线程再往下执行呢?...
/* String ObjectResult="原先的结果"; //使用VOLLY框架(与问题无关) JsonObjectRequest jsonObjectRequest = n ...
- C#/.NET主线程与子线程之间的关系
以前一直没有在程序中写过总结,再翻开程序时却不知所云,所以我决定写总结 一般 一个应用程序就对应一个进程,一个进程可有一个或多个线程,而一般有一个主线程. 有的博客上说"至少 ...
- java中子线程与主线程通信_Android笔记(三十二) Android中线程之间的通信(四)主线程给子线程发送消息...
之前的例子都是我们在子线程(WorkerThread)当中处理并发送消息,然后在主线程(UI线程)中获取消息并修改UI,那么可以不可以在由主线程发送消息,子线程接收呢?我们按照之前的思路写一下代码: ...
- pthread_detach():主线程与子线程分离,子线程结束后,资源自动回收
https://github.com/Rtoax/test/tree/master/c/glibc/pthread 目录 前言 pthread_join() pthread_detach() 前言 1 ...
- c语言主线程退出子线程,简单了解C语言中主线程退出对子线程的影响
这篇文章主要介绍了简单了解C语言中主线程退出对子线程的影响,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 对于程序来说,如果主进程在子进程还未结束时 ...
- c++主线程和子线程
c++主线程和子线程 最近在学习c++多线程,写一篇博客记录下自己的收获. 一.main()函数是主线程函数,在main()函数中创建的线程属于子线程,那主线程和子线程的优先级谁更高呢? 可以看下另外 ...
- Android的主线程与子线程
在上一篇文章Android的进程.线程与优先级中我们提到: 线程(thread):是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位.一个进程至少对应一个线程. CP ...
最新文章
- Wiki为什么会流行
- Python游戏开发pygame模块,Python实现吃豆人,儿时的回忆
- jittor和pytorch网络对比之context_encoder
- c语言解析xml字符串_Python XML解析和处理(三十二)
- ASP.NET多种不同页面间数据传递的方法
- Linux的软件包封装格式有,linux软件安装包详解---全
- php 取字符串的数字,php提取字符串中的数字
- springboot+security框架整合
- BIGG Digital Assets宣布再次购买60.7枚比特币
- python3速查参考- python基础 3 - - while循环实例 + Continue break的应用 + 列表的初步学习...
- jsp+mysql汽车维修管理系统的设计与开发_基于JSP+MySQl的计算机学院设备报修管理系统.doc...
- OPENCV+VS+QT,导入生成别人的.pro文件时提示opencv文件找不到,C1083:无法打开包括文件 opencv2/opencv.hpp
- resin 配置java_Resin4配置
- 读书笔记5.2——《让数字说话:审计,就这么简单》:孙含晖
- 厉害了!28岁程序员期权过亿,彪悍从字节退休!
- Navicat 压缩包免费下载
- svn 提交仍处于树冲突 One or more files are in a conflicted state
- java和c#通过esb服务互调用组件
- DirectX11 裁剪像素
- Attention机制介绍(原理+代码)