美文网首页
java多线程4-如何实现处理线程的返回值

java多线程4-如何实现处理线程的返回值

作者: 那钱有着落吗 | 来源:发表于2021-03-04 09:34 被阅读0次
image.png

1.实现处理线程的返回值方法一 主线程等待法

我们创建了一个子线程去处理数据,但是不知道什么时候处理完,那么就可以主线程一直等待着,知道有返回数据,这个时候在执行主线程即可。


image.png
image.png

方法虽然简单,但是缺点也很明确,如果你需要等待的数据过多,代码就会显得非常臃肿混乱了,而且也无法做到精准的控制,我们不知道要等待多久

2.使用Thread类中的join方法阻塞当前线程以等待子线程处理完毕

这里就只需要将循环等待的代码换成t.join()就可以了,这个时候直到子线程处理完毕,主线程才解开阻塞继续往下面走。

3.通过Callable接口实现:通过FutureTask 或者 线程池获取

通过Callalbe接口,就会得到一个future的对象,这个对象可以使用get方法获取返回值。

  • A.下面是通过FutureTask实现callable接口的实例:
image.png image.png

下面是FutureTask类:


image.png
image.png
image.png

这个get方法主要是用来阻塞当前调用该方法的线程,知道call方法执行完毕为止,就可以取到返回值了。

image.png

我们看到还有一个get方法,这个方法传入了一个时间,大概逻辑就是在这个时间内如果还没有得到返回值,就报错超时。

image.png
  • B. 下面是通过线程池来实现callable接口的实例:

下面是Future类:


image.png image.png image.png image.png

这么一来我们就清楚了FutureTask是实现了Future接口的方法。

image.png

使用了线程池的方法我们是可以批量的执行多线程的。

相关文章

  • java多线程4-如何实现处理线程的返回值

    1.实现处理线程的返回值方法一 主线程等待法 我们创建了一个子线程去处理数据,但是不知道什么时候处理完,那么就可以...

  • springboot2.x 如何在请求中 多线程并发处理业务[全

    由于 我的springboot2.x 使用带返回值的异步任务实现多线程并发任务[一] 讲述了多线程处理任务,但实现...

  • (1)多线程的使用和基础

    1.线程的应用 如何应用多线程 在 Java 中,有多种方式来实现多线程。继承 Thread 类、实现 Runna...

  • Java进阶之synchronized关键字详解

    掌握多线程是从Java入门后需要跳过的第一大坎,使用多线程就难以避免要处理数据同步问题,在Java多线程中实现数据...

  • Java基础(六)

    多线程 Java多线程并发 1.1 JAVA 并发知识库 1.2 JAVA 线程实现/创建方式 1.2.1 继承 ...

  • java多线程

    实现多线程的方式 实现Runnable(无返回值) 实现Callable(Future接收返回值) 继承Threa...

  • (五) volatile关键字

    Java多线程目录 1 背景 理解Java多线程的内存抽象逻辑请阅读java多线程内存模型,当代操作系统,处理器为...

  • 多线程

    1-JAVA多线程 2-生命周期 3-线程优先级 4-创建线程 5-Thread方法

  • java多线程

    1.JAVA多线程实现方式 JAVA多线程实现方式主要有三种:继承Thread类、实现Runnable接口、使用E...

  • Q&A-04 多线程&分布式

    1、Java实现多线程有哪几种方式 Java 多线程实现方式主要有四种: 继承Thread类 实现Runnable...

网友评论

      本文标题:java多线程4-如何实现处理线程的返回值

      本文链接:https://www.haomeiwen.com/subject/rlksfltx.html