public class ForkJoinPoolFactoryBean
extends java.lang.Object
implements org.springframework.beans.factory.FactoryBean<java.util.concurrent.ForkJoinPool>, org.springframework.beans.factory.InitializingBean, org.springframework.beans.factory.DisposableBean
FactoryBean
that builds and exposes a preconfigured ForkJoinPool
.
For details on the ForkJoinPool API and its use with RecursiveActions, see the JDK 7 javadoc.
jsr166.jar
, containing java.util.concurrent
updates for Java 6, can be obtained
from the concurrency interest website.
Constructor and Description |
---|
ForkJoinPoolFactoryBean() |
Modifier and Type | Method and Description |
---|---|
void |
afterPropertiesSet() |
void |
destroy() |
java.util.concurrent.ForkJoinPool |
getObject() |
java.lang.Class<?> |
getObjectType() |
boolean |
isSingleton() |
void |
setAsyncMode(boolean asyncMode)
Specify whether to establish a local first-in-first-out scheduling mode for forked tasks
that are never joined.
|
void |
setAwaitTerminationSeconds(int awaitTerminationSeconds)
Set the maximum number of seconds that this ForkJoinPool is supposed to block
on shutdown in order to wait for remaining tasks to complete their execution
before the rest of the container continues to shut down.
|
void |
setCommonPool(boolean commonPool)
Set whether to expose JDK 8's 'common'
ForkJoinPool . |
void |
setParallelism(int parallelism)
Specify the parallelism level.
|
void |
setThreadFactory(java.util.concurrent.ForkJoinPool.ForkJoinWorkerThreadFactory threadFactory)
Set the factory for creating new ForkJoinWorkerThreads.
|
void |
setUncaughtExceptionHandler(java.lang.Thread.UncaughtExceptionHandler uncaughtExceptionHandler)
Set the handler for internal worker threads that terminate due to unrecoverable errors
encountered while executing tasks.
|
public void setCommonPool(boolean commonPool)
ForkJoinPool
.
Default is "false", creating a local ForkJoinPool
instance based on the
"parallelism"
, "threadFactory"
,
"uncaughtExceptionHandler"
and
"asyncMode"
properties on this FactoryBean.
NOTE: Setting this flag to "true" effectively ignores all other
properties on this FactoryBean, reusing the shared common JDK ForkJoinPool
instead. This is a fine choice on JDK 8 but does remove the application's ability
to customize ForkJoinPool behavior, in particular the use of custom threads.
ForkJoinPool.commonPool()
public void setParallelism(int parallelism)
Runtime.availableProcessors()
.public void setThreadFactory(java.util.concurrent.ForkJoinPool.ForkJoinWorkerThreadFactory threadFactory)
ForkJoinPool.defaultForkJoinWorkerThreadFactory
.public void setUncaughtExceptionHandler(java.lang.Thread.UncaughtExceptionHandler uncaughtExceptionHandler)
public void setAsyncMode(boolean asyncMode)
true
) may be more appropriate
than the default locally stack-based mode in applications in which worker threads only
process event-style asynchronous tasks. Default is false
.public void setAwaitTerminationSeconds(int awaitTerminationSeconds)
By default, this ForkJoinPool won't wait for the termination of tasks at all. It will continue to fully execute all ongoing tasks as well as all remaining tasks in the queue, in parallel to the rest of the container shutting down. In contrast, if you specify an await-termination period using this property, this executor will wait for the given time (max) for the termination of tasks.
Note that this feature works for the "commonPool"
mode as well. The underlying ForkJoinPool won't actually terminate in that
case but will wait for all tasks to terminate.
ForkJoinPool.shutdown()
,
ForkJoinPool.awaitTermination(long, java.util.concurrent.TimeUnit)
public void afterPropertiesSet()
afterPropertiesSet
in interface org.springframework.beans.factory.InitializingBean
@Nullable public java.util.concurrent.ForkJoinPool getObject()
getObject
in interface org.springframework.beans.factory.FactoryBean<java.util.concurrent.ForkJoinPool>
public java.lang.Class<?> getObjectType()
getObjectType
in interface org.springframework.beans.factory.FactoryBean<java.util.concurrent.ForkJoinPool>
public boolean isSingleton()
isSingleton
in interface org.springframework.beans.factory.FactoryBean<java.util.concurrent.ForkJoinPool>
public void destroy()
destroy
in interface org.springframework.beans.factory.DisposableBean