使用此 **Groovy 快速入门**,您将在约 3 分钟内开始尝试使用 GPars。我们假设您已在系统上安装了 Groovy。
步骤 1 — 启动 Groovy 控制台
启动一个新的 Groovy 控制台或在您喜欢的 IDE 中打开一个空的 Groovy 脚本源
步骤 2 — 添加依赖项
**GPars** 与 1.8 版之后的 Groovy 发行版捆绑在一起,因此此步骤通常不需要。_ |
我们将使用 Groovy 的 _Grape_ 功能来获取我们所需的所有依赖项。您可以查看 **GPars** 集成页面,了解将 **GPars** 集成到您的项目的其他方法。
将以下行添加到 Groovy 脚本中
使用 Grape 抓取功能
1
@Grab(group='org.codehaus.gpars', module='gpars', version='1.2.1')
步骤 3 — 尝试并行集合处理
信不信由你,现在,我们已经准备好尝试。尝试以下脚本,它将使用正则表达式并发查询字符串集合
Groovy 并发示例
1
2
3
4
5
6
7
8
@Grab(group='org.codehaus.gpars', module='gpars', version='1.2.1')
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')
}
运行脚本,您应该得到以下输出
-
找到一只蚂蚁
-
有些动物可以没有 a 生存
现在可以随意尝试更改正则表达式,使用不同的集合或不同的方法,例如 _eachParallel()_、_collectParallel()_、_maxParallel()_、_sumParallel()_ 等。您应该明白了吧?
要了解更多关于并行集合处理的信息,请访问 用户指南 中的并行集合部分。
步骤 4 — 演员
现在,我们可以尝试构建一个演员,并向它发送一些消息,以查看它的行为。
演员示例
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
@Grab(group='org.codehaus.gpars', module='gpars', version='1.2.0')
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)
我们的演员维护一个私有计数器,并接受不同类型的消息,这些消息会导致计数器更新。发送一个空值将使演员将当前计数器值回复给我们。请注意,_send()_ 方法名称是可选的,可以替换为 _<<_ 运算符或完全省略。