From: Charles Oliver Nutter Date: 2012-02-17T21:43:57+09:00 Subject: [ANN] forkjoin gem I finally got around to releasing a JRuby ext that wraps the fork/join framework from Java 7. As a bonus, I used the externally available jsr166y version, so it works on Java 5 and 6 too. gem install forkjoin forkjoin for JRuby ================== This is a small extension that wraps the JSR166y "Fork/Join" framework in an efficient way for JRuby. Example ------- ``` require 'forkjoin' pool = ForkJoin::Pool.new # FORK # Add a job (a proc) to the pool for each line map_futures = pool.invoke_all( ARGF.each_line.map{|line| ->{line.split.map{|word| [word,1]}}} ) # Get aggregate results counts = map_futures.map(&:get).inject({}) {|map, value| value.each {|k,v| (map[k] ||= []) << v} map } # JOIN # Add a job to the pool for each count in the map reduced_futures = pool.invoke_all( counts.map{|k, vs| ->{[k, vs.size]}} ) # Print out results (or you could "reduce" some other way) reduced_futures.map(&:get).each{|value| puts "%s %d\n" % value } ``` - Charlie