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 java.util.concurrent.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
ConstructorsConstructorDescriptionCreates a new instance ofCallableBackgroundInitializerand sets theCallableto be executed in a background thread.CallableBackgroundInitializer(Callable<T> call, ExecutorService exec) Creates a new instance ofCallableBackgroundInitializerand initializes it with theCallableto be executed in a background thread and theExecutorServicefor 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, startMethods inherited from class org.apache.commons.lang3.concurrent.AbstractConcurrentInitializer
close
-
Constructor Details
-
CallableBackgroundInitializer
Creates a new instance ofCallableBackgroundInitializerand sets theCallableto be executed in a background thread.- Parameters:
call- theCallable(must not be null)- Throws:
IllegalArgumentException- if theCallableis null
-
CallableBackgroundInitializer
Creates a new instance ofCallableBackgroundInitializerand initializes it with theCallableto be executed in a background thread and theExecutorServicefor managing the background execution.- Parameters:
call- theCallable(must not be null)exec- an externalExecutorServiceto be used for task execution- Throws:
IllegalArgumentException- if theCallableis null
-
-
Method Details
-
getTypedException
Gets an Exception with a type of E as defined by a concrete subclass of this class.- Overrides:
getTypedExceptionin 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 theCallablepassed at construction time of this object.- Overrides:
initializein classAbstractConcurrentInitializer<T,Exception> - Returns:
- the result of the initialization
- Throws:
Exception- if an error occurs
-