首页 > 编程语言 > 详细

理解Java FutureTask

时间:2020-05-27 16:20:05      阅读:39      评论:0      收藏:0      [点我收藏+]

FutureTask实现的功能

它的功能就像他继承的接口一样:Runnable与Future。他实现了一套机制将两者连接起来。 Runnable主要方法是run(),用于执行一些程序。 Future主要用两个功能:get和cancel。

FutureTask就是将他们两者联系起来。即run()运行完之后如何让get能拿到数据;当数据没有返回时get如何阻塞和当完成后让get返回;如何让用户取消当前任务。

Future中get方法的实现

get方法是带阻塞的。当线程运行完成可以直接通过get获取数据,当线程未完成计算则阻塞当前线程,知道运行完成解除阻塞。

这个场景是很典型的阻塞-唤醒,其内部使用LockSupport实现。当用户调用get方法后将该线程加入链表,并阻塞。当run方法完成,唤醒所有链表中所有阻塞的线程,各线程返回数据。

理解Java FutureTask

原文:https://www.cnblogs.com/hnrainll/p/12973337.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!