java 自定义future_Java中的Future

1 概述

Future代表异步计算返回的结果,提供了检查是否结束、等待结束以及获取计算结果的方法。Executor框架使用Runnable作为其任务表示形式,但它不能返回一个值。许多任务实际上都是存在延迟计算的:执行数据库查询,从网络上获取资源,或者某个复杂耗时的计算。对于这种任务,Callable是一个更好的抽象,他能返回一个值,并可能抛出一个异常。

/**

* A task that returns a result and may throw an exception.

* Implementors define a single method with no arguments called

* call.

*

*

The Callable interface is similar to {@link

* java.lang.Runnable}, in that both are designed for classes whose

* instances are potentially executed by another thread. A

* Runnable, however, does not return a result and cannot

* throw a checked exception.

*

*

The {@link Executors} class contains utility methods to

* convert from other common forms to Callable classes.

*

* @see Executor

* @since 1.5

* @author Doug Lea

* @param the result type of method call

*/

public interface Callable {

/**

* Computes a result, or throws an exception if unable to do so.

*

* @return computed result

* @throws Exception if unable to compute a result

*/

V call() throws Exception;

}

public interface Future {

/**

* Attempts to cancel execution of this task. This attempt will

* fail if the task has already completed, has already been cancelled,

* or could not be cancelled for some other reason. If successful,

* and this task has not started when cancel is called,

* this task should never run. If the task has already started,

* then the mayInterruptIfRunning parameter determines

* whether the thread executing this task should be interrupted in

* an attempt to stop the task.

*

*

After this method returns, subsequent calls to {@link #isDone} will

* always return true. Subsequent calls to {@link #isCancelled}

* will always return true if this method returned true.

*

* @param mayInterruptIfRunning true if the thread executing this

* task should be interrupted; otherwise, in-progress tasks are allowed

* to complete

* @return false if the task could not be cancelled,

* typically because it has already completed normally;

* true otherwise

*/

boolean cancel(boolean mayInterruptIfRunning);

/**

* Returns true if this task was cancelled before it completed

* normally.

*

* @return

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值