美文网首页
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-如何实现处理线程的返回值

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