...
Add the following line to the groovy script:
| Code Block |
|---|
@Grab(group='org.codehaus.gpars', module='gpars', version='0.12')
|
...
Believe it or not, now, we're ready to experiment. Try the following script, which will concurrently query a collection of strings with regular expressions:
| Code Block |
|---|
@Grab(group='org.codehaus.gpars', module='gpars', version='0.12')
import groovyx.gpars.GParsPool
GParsPool.withPool {
def animals = ['dog', 'ant', 'cat', 'whale']
println(animals.anyParallel {it ==~ /ant/} ? 'Found an ant' : 'No ants found')
println(animals.everyParallel {it.contains('a')} ? 'All animals contain a' : 'Some animals can live without an a')
}
|
Run the script and you should get the following output:
| Code Block |
|---|
Found an ant
Some animals can live without an a
|
...
To find out more about parallel collection processing, visit the Parallel Colections section of the User Guide.
Step 4 - Actors
Now we could try to build an actor and send it a couple of messages to see it acting.
| Code Block |
|---|
@Grab(group='org.codehaus.gpars', module='gpars', version='0.12')
import groovyx.gpars.actor.DynamicDispatchActor
import org.codehaus.groovy.runtime.NullObject
final class MyActor extends DynamicDispatchActor {
private int counter = 0
void onMessage(String message) {
counter += message.size()
println 'Received string'
}
void onMessage(Integer message) {
counter += message
println 'Received integer'
}
void onMessage(Object message) {
counter += 1
println 'Received object'
}
void onMessage(NullObject message) {
println 'Received a null object. Sending back the current counter value.'
reply counter
}
}
final def actor = new MyActor()
actor.start()
actor.send 1
actor << 2
actor 20
actor 'Hello'
println actor.sendAndWait(null)
|
...