首页 » SEO优化 » php线程返回成果技巧_线程怎么返回结果一路来理解下Future

php线程返回成果技巧_线程怎么返回结果一路来理解下Future

访客 2024-11-12 0

扫一扫用手机浏览

文章目录 [+]

为什么要用Future

我们在并发编程时,常常会利用两种创建线程的方法:

继续Thread类实现Runnable接口

但是这两种方法都短缺我们常常会碰着的一种需求----获取线程实行结果。

php线程返回成果技巧_线程怎么返回结果一路来理解下Future

比如我们要进行两个运算,然后把两个运算的和返回。
当然我们可以利用串联实行两个运算,然后再将两个结果求和返回。
但是如果我们但运算特殊繁芜,耗时较多,我们须要统筹韶光,让两个运算一起实行,处理器多个核心分别处理一个运算,这样会极大降落处理韶光。
利用Thread和Runnable都无法获取实行结果,这时候我们就须要用到Future了。

php线程返回成果技巧_线程怎么返回结果一路来理解下Future
(图片来自网络侵删)

JDK1.5开始,就供应了Callable和Future。
Future模式的核心思想能够让主线程将原来须要同步等待的这段韶光用来做其他的事情。
让主线程不必等待任务完成,而是过段韶光来获取实行结果。

Future接口

CompetableFuture和ForkJoinFuture两个类实现了Future接口,RunnableFuture和SchedualedFuture两个接口继续了Future接口

RunnableFuture这个接口同时继续Future接口和Runnable接口,在成功实行run()方法后,可以通过Future访问实行结果。
这个接口都实现类是FutureTask,一个可取消的异步打算,这个类供应了Future的基本实现。
FutureTask能用来包装一个Callable或Runnable工具,由于它实现了Runnable接口,而且它能被通报到Executor进行实行。
为了供应单例类,这个类在创建自定义的事情类时供应了protected布局函数。
SchedualedFuture这个接口表示一个延时的行为可以被取消。
常日一个安排好的future是定时任务SchedualedExecutorService的结果CompleteFuture一个Future类是显示的完成,而且能被用作一个完制品级,通过它的完成触发支持的依赖函数和行为。
当两个或多个线程要实行完成或取消操作时,只有一个能够成功。
ForkJoinTask基于任务的抽象类,可以通过ForkJoinPool来实行。
一个ForkJoinTask是类似于线程实体,但是相对付线程实体是轻量级的。
大量的任务和子任务会被ForkJoinPool池中的真实线程挂起来,以某些利用限定为代价。
Future紧张方法get()当任务结束后返回一个结果,如果调用时,事情还没有结束,则会壅塞线程,直到任务实行完毕。
get(long timeout,TimeUnit unit)可以许可在一定韶光内去等待获取实行结果,如果超过这个韶光,抛出TimeoutException。
cancel(boolean mayInterruptIfRunning)我们可以取消这个实行逻辑,如果这个逻辑已经正在实行,供应可选的参数来掌握是否取消已经正在实行的逻辑。
调用cancel并不是一定可以停滞实行。
isDone()我们可以判断实行逻辑是否已经实行完成。
isCancel()我们可以判断实行逻辑是否已经被取消。
标签:

相关文章

今日头条算法岗三面算法工程师的面试之路

大数据和人工智能技术逐渐成为各行各业的热门话题。今日头条作为中国领先的资讯平台,其算法岗位一直是求职者争相竞逐的焦点。本文将针对今...

SEO优化 2025-01-31 阅读1 评论0

今日头条算法如何打造个化内容推荐

在移动互联网时代,信息爆炸已成为常态。如何在海量信息中找到自己感兴趣的内容,成为了一个亟待解决的问题。今日头条作为一款备受瞩目的新...

SEO优化 2025-01-31 阅读1 评论0

今日头条算法推荐其弊端与反思

算法推荐已经成为各大平台的核心竞争力。今日头条作为国内领先的资讯平台,凭借其强大的算法推荐系统,吸引了大量用户。在享受算法带来的便...

SEO优化 2025-01-31 阅读1 评论0

今日头条算法思维导图信息推荐的奥秘

信息传播速度越来越快,用户对信息的需求也越来越多样化。今日头条作为一款备受关注的新闻资讯平台,其背后的算法推荐机制一直是业界关注的...

SEO优化 2025-01-31 阅读1 评论0