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