class Bio::MAF::JThreadRunner

Public Class Methods

new(n_parallel) click to toggle source
# File lib/bio/maf/jobs.rb, line 77
def initialize(n_parallel)
  @n_parallel = n_parallel
  @exec = java.util.concurrent.Executors.newFixedThreadPool(n_parallel)
  @ecs = java.util.concurrent.ExecutorCompletionService.new(@exec)
  @n = 0
end

Public Instance Methods

add(&blk) click to toggle source
# File lib/bio/maf/jobs.rb, line 84
def add(&blk)
  @ecs.submit(&blk)
  @n += 1
end
run() click to toggle source
# File lib/bio/maf/jobs.rb, line 89
def run
  seen = 0
  until seen == @n
    f = @ecs.take()
    begin
      f.get()
    rescue Exception => e
      LOG.error e
      @exec.shutdownNow()
      raise
    end
    seen += 1
  end
  @exec.shutdown()
end