The ParallelExecutor allows a computation to occur in parallel.
It can be used in two ways. First, with an explicit Future:
Future<String> future = executor.invoke(new Invokable<String>() { ... });The executor will submit the Invokable to a thread pool for execution in the background.
The ultimate value of the Invokable is available from invoking get() on the Future; this will block until the value is ready.
Other methods on Future can cancel the execution, or get the value only if it is ready within a timeout.
The thread pool is started automatically as needed, and will shutdown when the Registry itself is shutdown.
Another alternative will return an object, not a Future:
RSSFeed feed = executor.invoke(RSSFeed.class, new Invokable<RSSFeed>() { ... });This only works if the type is an interface. A proxy for the interface is created around the Future object; any invocation on the proxy will invoke get() on the Future.
Configuraton symbols are defined in IOCSymbols.