|
org.codehaus.gpars | |||||||
FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object groovyx.gpars.GParsPool
class GParsPool extends java.lang.Object
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(java.lang.Object 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 T
|
runForkJoin(AbstractForkJoinWorker rootWorker)
Starts a ForkJoin calculation with the supplied root worker and waits for the result. |
static T
|
runForkJoin(java.lang.Object args)
Starts a ForkJoin calculation with the supplied root worker and waits for the result. |
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(java.lang.Object 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), java.lang.Object#wait(), java.lang.Object#wait(long, int), 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 final 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(java.lang.Object 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 T runForkJoin(AbstractForkJoinWorker rootWorker)
rootWorker
- The worker that calculates the root of the Fork/Join problem
static T runForkJoin(java.lang.Object args)
rootWorker
- The worker that calculates the root of the Fork/Join problem
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(java.lang.Object 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–2010 Václav Pech. All Rights Reserved.