標籤:
/** * A task that returns a result and may throw an exception. * Implementors define a single method with no arguments called * {@code call}. * * <p>The {@code 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 * {@code Runnable}, however, does not return a result and cannot * throw a checked exception. * * <p>The {@link Executors} class contains utility methods to * convert from other common forms to {@code Callable} classes. * * @see Executor * @since 1.5 * @author Doug Lea * @param <V> the result type of method {@code call} */@FunctionalInterfacepublic interface Callable<V> { /** * 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;}
Callable 和 Runnable 的使用方法大同小異, 區別在於:
1.Callable 使用 call() 方法, Runnable 使用 run() 方法
2.call() 可以傳回值, 而 run()方法不能返回。
3.call() 可以拋出受檢查的異常,比如ClassNotFoundException, 而run()不能拋出受檢查的異常。
java.util.concurrent.Callable