import java.util.concurrent.BlockingQueue import java.util.concurrent.LinkedBlockingQueue BlockingQueue queue = new LinkedBlockingQueue(); Thread.start('Producer') { 10.times { println(Thread.currentThread().name + " adding $it") queue << it sleep(100) } } Thread.start('Consumer') { for(i in 0..9){ sleep(200) print(Thread.currentThread().name) println("consuming ${queue.take()}") } }
Category Archives: Groovy
Groovy: Closure Composition
Closure composition corresponds to the concept of function composition, that is to say creating a new function by composing two or more functions (chaining calls), as illustrated in this example:
def plus2 = { it + 2 }
def times3 = { it * 3 }
def times3plus2 = plus2 << times3
assert times3plus2(3) == 11
assert times3plus2(4) == plus2(times3(4))
def plus2times3 = times3 << plus2
assert plus2times3(3) == 15
assert plus2times3(5) == times3(plus2(5))
// reverse composition
assert times3plus2(3) == (times3 >> plus2)(3)