## Uses of Interface
java.util.concurrent.Callable

- Packages that use Callable
  Package | Description
  --- | ---
  com.sun.source.util | Provides utilities for operations on abstract syntax trees (AST).
  java.util.concurrent | Utility classes commonly useful in concurrent programming.
  javax.tools | Provides interfaces for tools which can be invoked from a program, for example, compilers.

- - ### Uses of Callable in com.sun.source.util

    Classes in com.sun.source.util that implement Callable
    Modifier and Type | Class | Description
    --- | --- | ---
    `class` | `JavacTask` | Provides access to functionality specific to the JDK Java Compiler, javac.

  - ### Uses of Callable in java.util.concurrent

    Methods in java.util.concurrent that return Callable
    Modifier and Type | Method | Description
    --- | --- | ---
    `static Callable<Object>` | Executors.`callable​(Runnable task)` | Returns a `Callable` object that, when called, runs the given task and returns `null`.
    `static <T> Callable<T>` | Executors.`callable​(Runnable task, T result)` | Returns a `Callable` object that, when called, runs the given task and returns the given result.
    `static Callable<Object>` | Executors.`callable​(PrivilegedAction<?> action)` | Returns a `Callable` object that, when called, runs the given privileged action and returns its result.
    `static Callable<Object>` | Executors.`callable​(PrivilegedExceptionAction<?> action)` | Returns a `Callable` object that, when called, runs the given privileged exception action and returns its result.
    `static <T> Callable<T>` | Executors.`privilegedCallable​(Callable<T> callable)` | Returns a `Callable` object that will, when called, execute the given `callable` under the current access control context.
    `static <T> Callable<T>` | Executors.`privilegedCallableUsingCurrentClassLoader​(Callable<T> callable)` | Returns a `Callable` object that will, when called, execute the given `callable` under the current access control context, with the current context class loader as the context class loader.

    Methods in java.util.concurrent with parameters of type Callable
    Modifier and Type | Method | Description
    --- | --- | ---
    `static <T> ForkJoinTask<T>` | ForkJoinTask.`adapt​(Callable<? extends T> callable)` | Returns a new `ForkJoinTask` that performs the `call` method of the given `Callable` as its action, and returns its result upon `ForkJoinTask.join()`, translating any checked exceptions encountered into `RuntimeException`.
    `protected <V> RunnableScheduledFuture<V>` | ScheduledThreadPoolExecutor.`decorateTask​(Callable<V> callable, RunnableScheduledFuture<V> task)` | Modifies or replaces the task used to execute a callable.
    `protected <T> RunnableFuture<T>` | AbstractExecutorService.`newTaskFor​(Callable<T> callable)` | Returns a `RunnableFuture` for the given callable task.
    `static <T> Callable<T>` | Executors.`privilegedCallable​(Callable<T> callable)` | Returns a `Callable` object that will, when called, execute the given `callable` under the current access control context.
    `static <T> Callable<T>` | Executors.`privilegedCallableUsingCurrentClassLoader​(Callable<T> callable)` | Returns a `Callable` object that will, when called, execute the given `callable` under the current access control context, with the current context class loader as the context class loader.
    `<V> ScheduledFuture<V>` | ScheduledExecutorService.`schedule​(Callable<V> callable, long delay, TimeUnit unit)` | Submits a value-returning one-shot task that becomes enabled after the given delay.
    `<V> ScheduledFuture<V>` | ScheduledThreadPoolExecutor.`schedule​(Callable<V> callable, long delay, TimeUnit unit)` |
    `<T> Future<T>` | AbstractExecutorService.`submit​(Callable<T> task)` |
    `Future<V>` | CompletionService.`submit​(Callable<V> task)` | Submits a value-returning task for execution and returns a Future representing the pending results of the task.
    `Future<V>` | ExecutorCompletionService.`submit​(Callable<V> task)` |
    `<T> Future<T>` | ExecutorService.`submit​(Callable<T> task)` | Submits a value-returning task for execution and returns a Future representing the pending results of the task.
    `<T> ForkJoinTask<T>` | ForkJoinPool.`submit​(Callable<T> task)` |
    `<T> Future<T>` | ScheduledThreadPoolExecutor.`submit​(Callable<T> task)` |

    Method parameters in java.util.concurrent with type arguments of type Callable
    Modifier and Type | Method | Description
    --- | --- | ---
    `<T> List<Future<T>>` | ExecutorService.`invokeAll​(Collection<? extends Callable<T>> tasks)` | Executes the given tasks, returning a list of Futures holding their status and results when all complete.
    `<T> List<Future<T>>` | ExecutorService.`invokeAll​(Collection<? extends Callable<T>> tasks, long timeout, TimeUnit unit)` | Executes the given tasks, returning a list of Futures holding their status and results when all complete or the timeout expires, whichever happens first.
    `<T> List<Future<T>>` | ForkJoinPool.`invokeAll​(Collection<? extends Callable<T>> tasks)` |
    `<T> T` | ExecutorService.`invokeAny​(Collection<? extends Callable<T>> tasks)` | Executes the given tasks, returning the result of one that has completed successfully (i.e., without throwing an exception), if any do.
    `<T> T` | ExecutorService.`invokeAny​(Collection<? extends Callable<T>> tasks, long timeout, TimeUnit unit)` | Executes the given tasks, returning the result of one that has completed successfully (i.e., without throwing an exception), if any do before the given timeout elapses.

    Constructors in java.util.concurrent with parameters of type Callable
    Constructor | Description
    --- | ---
    `FutureTask​(Callable<V> callable)` | Creates a `FutureTask` that will, upon running, execute the given `Callable`.

  - ### Uses of Callable in javax.tools

    Subinterfaces of Callable in javax.tools
    Modifier and Type | Interface | Description
    --- | --- | ---
    `static interface` | `DocumentationTool.DocumentationTask` | Interface representing a future for a documentation task.
    `static interface` | `JavaCompiler.CompilationTask` | Interface representing a future for a compilation task.