publicinterfaceFuture<V>Future表示异步计算的结果。它提供了检查计算是否完成的方法,以等待计算的完成,并获取计算的结果。计算完成后只能使用get方法来获取结果,如有必要,计算完成前可以阻塞此方法。取消
publicinterfaceFuture<V>Future
表示异步计算的结果。它提供了检查计算是否完成的方法,以等待计算的完成,并获取计算的结果。计算完成后只能使用get方法来获取结果,如有必要,计算完成前可以阻塞此方法。取消则由cancel方法来执行。还提供了其他方法,以确定任务是正常完成还是被取消了。一旦计算完成,就不能再取消计算。如果为了可取消性而使用Future但又不提供可用的结果,则可以声明Future<?>形式类型、并返回null作为底层任务的结果。
Future主要定义了5个方法:
1)booleancancel(booleanmayInterruptIfRunning):
试图取消对此任务的执行。如果任务已完成、或已取消,或者由于某些其他原因而无法取消,则此尝试将失败。当调用cancel时,如果调用成功,而此任务尚未启动,则此任务将永不运行。如果任务已经启动,则mayInterruptIfRunning参数确定是否应该以试图停止任务的方式来中断执行此任务的线程。此方法返回后,对isDone()的后续调用将始终返回true。如果此方法返回true,则对isCancelled()的后续调用将始终返回true。
2)booleanisCancelled():
如果在任务正常完成前将其取消,则返回true。
3)booleanisDone():
如果任务已完成,则返回true。可能由于正常终止、异常或取消而完成,在所有这些情况中,此方法都将返回true。
4)Vget()throwsInterruptedException,ExecutionException
:如有必要,等待计算完成,然后获取其结果。
5)Vget(longtimeout,TimeUnitunit)throwsInterruptedException,ExecutionException,TimeoutException
:如有必要,最多等待为使计算完成所给定的时间之后,获取其结果(如果结果可用)。
Future<V>接口
Future<V>接口是用来获取异步计算结果的,说白了就是对具体的Runnable或者Callable对象任务执行的结果进行获取(get()),取消(cancel()),判断是否完成等操作。我们看看Future接口的源码:
public interface Future<V> { boolean cancel(boolean mayInterruptIfRunning); boolean isCancelled(); boolean isDone(); V get() throws InterruptedException, ExecutionException; V get(long timeout, TimeUnit unit) throws InterruptedException, ExecutionException, TimeoutException; }
--结束END--
本文标题: java多线程编程同步器Future和FutureTask解析及代码示例
本文链接: https://www.lsjlt.com/news/221308.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
下载Word文档到电脑,方便收藏和打印~
2024-05-11
2024-05-11
2024-05-11
2024-05-11
2024-05-11
2024-05-11
2024-05-11
2024-05-11
2024-05-11
2024-05-11
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0