Create a gist now

Instantly share code, notes, and snippets.

async jruby priority queue
require 'java'
class AsyncPriorityQueue < java.util.PriorityQueue
def initialize(*args)
super
@popq = []
end
def add(o)
super unless contains?(o)
end
def push(o)
if add(o) and !@popq.empty?
@popq.shift.call(self.poll)
end
end
def pop(prc=nil, &blk)
raise ArgumentError, 'block or proc required' unless blk ||= prc
if empty?
@popq << blk
else
blk.call(self.poll)
end
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment