|
org.codehaus.gpars | |||||||
FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object groovyx.gpars.GParsPool
class GParsPool
Enables a ParallelArray-based (from JSR-166y) DSL on collections. In general cases the Parallel Array implementation shows to be much faster (10 - 20 times) compared to the executor service implementation in GParsExecutorsPool. E.g.
GParsPool.withPool(5) {final AtomicInteger result = new AtomicInteger(0) [1, 2, 3, 4, 5].eachParallel {result.addAndGet(it)}assertEquals 15, result}GParsPool.withPool(5) {final List result = [1, 2, 3, 4, 5].collectParallel {it * 2}assert ([2, 4, 6, 8, 10].equals(result))}GParsPool.withPool(5) {assert [1, 2, 3, 4, 5].everyParallel {it > 0}assert ![1, 2, 3, 4, 5].everyParallel {it > 1}}
Nested Class Summary | |
---|---|
static class |
GParsPool.MyCancellableRecursiveTask
|
Field Summary | |
---|---|
private static ThreadLocalPools |
currentPoolStack
Maps threads to their appropriate thread pools |
private static int |
defaultPoolSize
Caches the default pool size. |
Constructor Summary | |
GParsPool()
|
Method Summary | |
---|---|
private static UncaughtExceptionHandler
|
createDefaultUncaughtExceptionHandler()
|
private static java.lang.Object
|
createPool()
Creates a new pool with the default size() |
private static java.lang.Object
|
createPool(int poolSize)
Creates a new pool with the given size() |
private static java.lang.Object
|
createPool(int poolSize, UncaughtExceptionHandler handler)
|
static java.lang.Object
|
ensurePool(ForkJoinPool pool, groovy.lang.Closure cl)
Just like withExistingPool() registers a thread pool, but doesn't install the GParsPoolUtil category. |
static java.util.List
|
executeAsync(groovy.lang.Closure... closures)
Starts multiple closures in separate threads, collecting Futures for their return values Reuses the pool defined by the surrounding withPool() call. |
static java.util.List
|
executeAsync(java.util.List closures)
Starts multiple closures in separate threads, collecting Futures for their return values Reuses the pool defined by the surrounding withPool() call. |
static java.util.List
|
executeAsyncAndWait(groovy.lang.Closure... closures)
Starts multiple closures in separate threads, collecting their return values Reuses the pool defined by the surrounding withPool() call. |
static java.util.List
|
executeAsyncAndWait(java.util.List closures)
Starts multiple closures in separate threads, collecting their return values Reuses the pool defined by the surrounding withPool() call. |
protected static java.lang.Object
|
retrieveCurrentPool()
Retrieves the pool assigned to the current thread. |
static java.lang.Object
|
runForkJoin(AbstractForkJoinWorker rootWorker)
Starts a ForkJoin calculation with the supplied root worker and waits for the result. |
static java.lang.Object
|
runForkJoin(java.lang.Object... args)
Starts a ForkJoin calculation with the supplied root worker and waits for the result. |
static void
|
shutdown()
|
static java.lang.Object
|
speculate(java.util.List alternatives)
Runs the supplied closures asynchronously and in parallel, returning the first result obtained and cancelling the other (slower) calculations. |
static java.lang.Object
|
speculate(groovy.lang.Closure... alternatives)
Runs the supplied closures asynchronously and in parallel, returning the first result obtained and cancelling the other (slower) calculations. |
static java.lang.Object
|
withExistingPool(ForkJoinPool pool, groovy.lang.Closure cl)
Reuses an instance of ForkJoinPool, binds it to the current thread, enables the ParallelArray DSL and runs the supplied closure. |
static java.lang.Object
|
withPool(groovy.lang.Closure cl)
Creates a new instance of ForkJoinPool, binds it to the current thread, enables the ParallelArray DSL and runs the supplied closure. |
static java.lang.Object
|
withPool(int numberOfThreads, groovy.lang.Closure cl)
Creates a new instance of ForkJoinPool, binds it to the current thread, enables the ParallelArray DSL and runs the supplied closure. |
static java.lang.Object
|
withPool(int numberOfThreads, UncaughtExceptionHandler handler, groovy.lang.Closure cl)
Creates a new instance of ForkJoinPool, binds it to the current thread, enables the ParallelArray DSL and runs the supplied closure. |
Methods inherited from class java.lang.Object | |
---|---|
java.lang.Object#wait(long, int), java.lang.Object#wait(long), java.lang.Object#wait(), java.lang.Object#equals(java.lang.Object), java.lang.Object#toString(), java.lang.Object#hashCode(), java.lang.Object#getClass(), java.lang.Object#notify(), java.lang.Object#notifyAll() |
Field Detail |
---|
private static ThreadLocalPools currentPoolStack
private static final int defaultPoolSize
Constructor Detail |
---|
GParsPool()
Method Detail |
---|
private static UncaughtExceptionHandler createDefaultUncaughtExceptionHandler()
private static java.lang.Object createPool()
private static java.lang.Object createPool(int poolSize)
private static java.lang.Object createPool(int poolSize, UncaughtExceptionHandler handler)
static java.lang.Object ensurePool(ForkJoinPool pool, groovy.lang.Closure cl)
static java.util.List executeAsync(groovy.lang.Closure... closures)
static java.util.List executeAsync(java.util.List closures)
static java.util.List executeAsyncAndWait(groovy.lang.Closure... closures)
static java.util.List executeAsyncAndWait(java.util.List closures)
protected static java.lang.Object retrieveCurrentPool()
static java.lang.Object runForkJoin(AbstractForkJoinWorker rootWorker)
rootWorker
- The worker that calculates the root of the Fork/Join problem
static java.lang.Object runForkJoin(java.lang.Object... args)
rootWorker
- The worker that calculates the root of the Fork/Join problem
static final void shutdown()
static java.lang.Object speculate(java.util.List alternatives)
alternatives
- All the functions to invoke in parallel
static java.lang.Object speculate(groovy.lang.Closure... alternatives)
alternatives
- All the functions to invoke in parallel
static java.lang.Object withExistingPool(ForkJoinPool pool, groovy.lang.Closure cl)
GParsPool.withExistingPool(anotherPool) {GParsPool pool -> def result = Collections.synchronizedSet(new HashSet()) [1, 2, 3, 4, 5].eachParallel {Number number -> result.add(number * 10)}* assertEquals(new HashSet([10, 20, 30, 40, 50]), result) }*
pool
- The thread pool to use, the pool will not be shutdown after this method returns
static java.lang.Object withPool(groovy.lang.Closure cl)
GParsPool.withPool {GParsPool pool -> def result = Collections.synchronizedSet(new HashSet()) [1, 2, 3, 4, 5].eachParallel {Number number -> result.add(number * 10)}* assertEquals(new HashSet([10, 20, 30, 40, 50]), result) }*
cl
- The block of code to invoke with the DSL enabled
static java.lang.Object withPool(int numberOfThreads, groovy.lang.Closure cl)
GParsPool.withPool(5) {GParsPool pool -> def result = Collections.synchronizedSet(new HashSet()) [1, 2, 3, 4, 5].eachParallel {Number number -> result.add(number * 10)}* assertEquals(new HashSet([10, 20, 30, 40, 50]), result) }*
numberOfThreads
- Number of threads in the newly created thread poolcl
- The block of code to invoke with the DSL enabled
static java.lang.Object withPool(int numberOfThreads, UncaughtExceptionHandler handler, groovy.lang.Closure cl)
GParsPool.withPool(5, handler) {GParsPool pool -> def result = Collections.synchronizedSet(new HashSet()) [1, 2, 3, 4, 5].eachParallel {Number number -> result.add(number * 10)}* assertEquals(new HashSet([10, 20, 30, 40, 50]), result) }*
numberOfThreads
- Number of threads in the newly created thread poolhandler
- Handler for uncaught exceptions raised in code performed by the pooled threadscl
- The block of code to invoke with the DSL enabled
Copyright © 2008–2013 Václav Pech. All Rights Reserved.