01: /*
02: * Written by Doug Lea with assistance from members of JCP JSR-166
03: * Expert Group and released to the public domain, as explained at
04: * http://creativecommons.org/licenses/publicdomain
05: */
06:
07: package java.util.concurrent;
08:
09: /**
10: * A task that returns a result and may throw an exception.
11: * Implementors define a single method with no arguments called
12: * <tt>call</tt>.
13: *
14: * <p>The <tt>Callable</tt> 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: * <tt>Runnable</tt>, 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 <tt>Callable</tt> classes.
22: *
23: * @see Executor
24: * @since 1.5
25: * @author Doug Lea
26: * @param <V> the result type of method <tt>call</tt>
27: */
28: public interface Callable<V> {
29: /**
30: * Computes a result, or throws an exception if unable to do so.
31: *
32: * @return computed result
33: * @throws Exception if unable to compute a result
34: */
35: V call() throws Exception;
36: }
|