java多线程 Callable源码分析

package java.util.concurrent;

/**
 * 返回结果并可能引发异常的任务。
 * 实现者定义了一个没有参数的方法,称为call。
 *
 * <p>可调用接口类似于java.lang.Runnable,
 * 这两个类的实例都可能由另一个线程执行。
 * 然而,Runnable不返回结果,也不能抛出检查异常。
 *
 * <p>Executors类包含实用方法,可以将其他常用形式转换成Callable的类。
 * 
 * 与Runnable相比,Callable接口有些不同之处:
 * 
 * Runnable接口没有返回值,Callable接口有返回值。
 * 又因为是返回值是泛型,所以任何类型的返回值都支持。
 * 
 * Runnable接口的run方法没有throws Exception。
 * 这意味着,Runnable不能抛出异常
 * (子类不能抛出比父类更多的异常,但现在Runnable的run方法本身没有抛出任何异常);
 * Callable接口可以抛出异常。
 * 
 * 但注意,Thread并没有一个构造器可以接受Callable参数的,而且Thread也没有一个Callable类型成员的。
 * 
 *     public Thread(Runnable target) {
 *         init(null, target, "Thread-" + nextThreadNum(), 0);
 *     }
 *  看来要想使用Callable还得依靠别的东西。   
 * 
 *
 * @see Executor
 * @since 1.5
 * @author Doug Lea
 * @param <V> the result type of method {@code call}
 */
@FunctionalInterface
public interface Callable<V> {
    /**
     * 计算结果,如果无法这样做,则抛出异常。
     *
     * @return computed result
     * @throws Exception if unable to compute a result
     */
    V call() throws Exception;
}

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值