今天面试被面试官问道怎么自己实现主线程获取到子线程的返回值,且要优雅不能使用静态变量

方法一:使用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());
}

怎么优雅的在主线程获取子线程的返回值相关推荐

  1. java 获取子线程_Java 主线程获取子线程返回结果

    1.自定义 package com.jgyang.com; public class MySyncThreadTest { public static void main(String[] args) ...

  2. 【多线程】学习记录七种主线程等待子线程结束之后在执行的方法

    最近遇到一个问题需要主线程等待所有的子线程结束,才能开始执行,统计所有的子线程执行结果,返回,网上翻阅各种资料,最后记录一下,找到七种方案 第一种:while循环 对于"等待所有的子线程结束 ...

  3. android子线程没有运行完,android假如主线程依赖子线程A的执行结果,如何让A执行完成,之后主线程再往下执行呢?...

    /* String ObjectResult="原先的结果"; //使用VOLLY框架(与问题无关) JsonObjectRequest jsonObjectRequest = n ...

  4. C#/.NET主线程与子线程之间的关系

    以前一直没有在程序中写过总结,再翻开程序时却不知所云,所以我决定写总结         一般 一个应用程序就对应一个进程,一个进程可有一个或多个线程,而一般有一个主线程. 有的博客上说"至少 ...

  5. java中子线程与主线程通信_Android笔记(三十二) Android中线程之间的通信(四)主线程给子线程发送消息...

    之前的例子都是我们在子线程(WorkerThread)当中处理并发送消息,然后在主线程(UI线程)中获取消息并修改UI,那么可以不可以在由主线程发送消息,子线程接收呢?我们按照之前的思路写一下代码: ...

  6. pthread_detach():主线程与子线程分离,子线程结束后,资源自动回收

    https://github.com/Rtoax/test/tree/master/c/glibc/pthread 目录 前言 pthread_join() pthread_detach() 前言 1 ...

  7. c语言主线程退出子线程,简单了解C语言中主线程退出对子线程的影响

    这篇文章主要介绍了简单了解C语言中主线程退出对子线程的影响,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 对于程序来说,如果主进程在子进程还未结束时 ...

  8. c++主线程和子线程

    c++主线程和子线程 最近在学习c++多线程,写一篇博客记录下自己的收获. 一.main()函数是主线程函数,在main()函数中创建的线程属于子线程,那主线程和子线程的优先级谁更高呢? 可以看下另外 ...

  9. Android的主线程与子线程

    在上一篇文章Android的进程.线程与优先级中我们提到: 线程(thread):是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位.一个进程至少对应一个线程. CP ...

最新文章

  1. Wiki为什么会流行
  2. Python游戏开发pygame模块,Python实现吃豆人,儿时的回忆
  3. jittor和pytorch网络对比之context_encoder
  4. c语言解析xml字符串_Python XML解析和处理(三十二)
  5. ASP.NET多种不同页面间数据传递的方法
  6. Linux的软件包封装格式有,linux软件安装包详解---全
  7. php 取字符串的数字,php提取字符串中的数字
  8. springboot+security框架整合
  9. BIGG Digital Assets宣布再次购买60.7枚比特币
  10. python3速查参考- python基础 3 - - while循环实例 + Continue break的应用 + 列表的初步学习...
  11. jsp+mysql汽车维修管理系统的设计与开发_基于JSP+MySQl的计算机学院设备报修管理系统.doc...
  12. OPENCV+VS+QT,导入生成别人的.pro文件时提示opencv文件找不到,C1083:无法打开包括文件 opencv2/opencv.hpp
  13. resin 配置java_Resin4配置
  14. 读书笔记5.2——《让数字说话:审计,就这么简单》:孙含晖
  15. 厉害了!28岁程序员期权过亿,彪悍从字节退休!
  16. Navicat 压缩包免费下载
  17. svn 提交仍处于树冲突 One or more files are in a conflicted state
  18. java和c#通过esb服务互调用组件
  19. DirectX11 裁剪像素
  20. Attention机制介绍(原理+代码)

热门文章

  1. 平面设计:鲜花导购网页
  2. 软件测试的自动化工具
  3. 武田完成向黑石出售其日本消费者保健事业部
  4. C# wpf ScrollBar自定义样式详解
  5. python接口自动化测试书籍_关于《Web接口开发与自动化测试--基于Python语言》
  6. [幽默笑话]生活中的好-坏-晕
  7. 搭建本地maven仓库
  8. 巴士拉银匠哈桑的故事(一)
  9. 使用计算机VLOOKUP函数需注意什么,计算机中的vlookup函数怎么使用
  10. 把指定长度字符串转换成数字