使用此 **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')
    }

运行脚本,您应该得到以下输出

  1. 找到一只蚂蚁

  2. 有些动物可以没有 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()_ 方法名称是可选的,可以替换为 _<<_ 运算符或完全省略。

演员回顾用户指南 将帮助您深入了解 **GPars** 演员。

后续步骤

现在,当您在系统上运行 **GPars** 时,现在是时候打开 用户指南,浏览 **GPars** 代码示例并继续尝试。

您也可以考虑查看 Java 快速入门,如果您需要从 Java 代码中使用 **GPars** 高级并发抽象。祝您好运!