Class CallableBackgroundInitializer<T>
- Type Parameters:
T
- the type of the object managed by this initializer class
- All Implemented Interfaces:
ConcurrentInitializer<T>
,FailableSupplier<T,
ConcurrentException>
BackgroundInitializer
implementation that wraps a
Callable
object.
An instance of this class is initialized with a Callable
object when
it is constructed. The implementation of the initialize()
method
defined in the super class delegates to this Callable
so that the
Callable
is executed in the background thread.
The Callable
interface is a standard mechanism
of the JDK to define tasks to be executed by another thread. The
CallableBackgroundInitializer
class allows combining this standard interface
with the background initializer API.
Usage of this class is very similar to the default usage pattern of the
BackgroundInitializer
class: Just create an instance and provide the
Callable
object to be executed, then call the initializer's
BackgroundInitializer.start()
method. This causes the Callable
to be executed in
another thread. When the results of the Callable
are needed the
initializer's BackgroundInitializer.get()
method can be called (which may block until
background execution is complete). The following code fragment shows a
typical usage example:
// a Callable that performs a complex computation
Callable<Integer> computationCallable = new MyComputationCallable();
// setup the background initializer
CallableBackgroundInitializer<Integer> initializer =
new CallableBackgroundInitializer(computationCallable);
initializer.start();
// Now do some other things. Initialization runs in a parallel thread
...
// Wait for the end of initialization and access the result
Integer result = initializer.get();
- Since:
- 3.0
-
Nested Class Summary
Nested classes/interfaces inherited from class org.apache.commons.lang3.concurrent.BackgroundInitializer
BackgroundInitializer.Builder<I extends BackgroundInitializer<T>,
T> Nested classes/interfaces inherited from class org.apache.commons.lang3.concurrent.AbstractConcurrentInitializer
AbstractConcurrentInitializer.AbstractBuilder<I extends AbstractConcurrentInitializer<T,
E>, T, B extends AbstractConcurrentInitializer.AbstractBuilder<I, T, B, E>, E extends Exception> -
Field Summary
Fields inherited from interface org.apache.commons.lang3.function.FailableSupplier
NUL
-
Constructor Summary
ConstructorDescriptionCreates a new instance ofCallableBackgroundInitializer
and sets theCallable
to be executed in a background thread.CallableBackgroundInitializer
(Callable<T> call, ExecutorService exec) Creates a new instance ofCallableBackgroundInitializer
and initializes it with theCallable
to be executed in a background thread and theExecutorService
for managing the background execution. -
Method Summary
Methods inherited from class org.apache.commons.lang3.concurrent.BackgroundInitializer
builder, get, getActiveExecutor, getExternalExecutor, getFuture, getTaskCount, isInitialized, isStarted, setExternalExecutor, start
Methods inherited from class org.apache.commons.lang3.concurrent.AbstractConcurrentInitializer
close
-
Constructor Details
-
CallableBackgroundInitializer
Creates a new instance ofCallableBackgroundInitializer
and sets theCallable
to be executed in a background thread.- Parameters:
call
- theCallable
(must not be null)- Throws:
IllegalArgumentException
- if theCallable
is null
-
CallableBackgroundInitializer
Creates a new instance ofCallableBackgroundInitializer
and initializes it with theCallable
to be executed in a background thread and theExecutorService
for managing the background execution.- Parameters:
call
- theCallable
(must not be null)exec
- an externalExecutorService
to be used for task execution- Throws:
IllegalArgumentException
- if theCallable
is null
-
-
Method Details
-
getTypedException
Gets an Exception with a type of E as defined by a concrete subclass of this class.- Overrides:
getTypedException
in classBackgroundInitializer<T>
- Parameters:
e
- The actual exception that was thrown- Returns:
- a new exception with the actual type of E, that wraps e.
-
initialize
Performs initialization in a background thread. This implementation delegates to theCallable
passed at construction time of this object.- Overrides:
initialize
in classAbstractConcurrentInitializer<T,
Exception> - Returns:
- the result of the initialization
- Throws:
Exception
- if an error occurs
-