25. class Greeter implements Callable<String> {
DataflowReadChannel names
DataflowWriteChannel greetings
@Override
String call() {
while(!Thread.currentThread().isInterrupted()) {
String name = names.val
greetings << "Hello " + name
}
}
}
26. def a = new SyncDataflowQueue()
def b = new SyncDataflowQueue()
def c = new SyncDataflowQueue()
!
group.task new Formatter(rawNames:a, formattedNames:b)
group.task new Greeter(names:b, greetings:c)
!
// 送信と受信をする
a << “Joe" // チャネルに送信
println c.val // 出力
…