1 /* 2 * Written by Doug Lea with assistance from members of JCP JSR-166 3 * Expert Group and released to the public domain, as explained at 4 * http://creativecommons.org/publicdomain/zero/1.0/ 5 */ 6 7 package java.util.concurrent; 8 9 /** 10 * A task that returns a result and may throw an exception. 11 * Implementors define a single method with no arguments called 12 * {@code call}. 13 * 14 * <p>The {@code Callable} interface is similar to {@link 15 * java.lang.Runnable}, in that both are designed for classes whose 16 * instances are potentially executed by another thread. A 17 * {@code Runnable}, however, does not return a result and cannot 18 * throw a checked exception. 19 * 20 * <p>The {@link Executors} class contains utility methods to 21 * convert from other common forms to {@code Callable} classes. 22 * 23 * @see Executor 24 * @since 1.5 25 * @author Doug Lea 26 * @param <V> the result type of method {@code call} 27 */ 28 @FunctionalInterface 29 public interface Callable<V> { 30 /** 31 * Computes a result, or throws an exception if unable to do so. 32 * 33 * @return computed result 34 * @throws Exception if unable to compute a result 35 */ call()36 V call() throws Exception; 37 } 38