I don't think this should be done manually. Can't you use a work-stealing queue, as I did in cc.factorie.util.SSHActorExecutor to do the round-robin in a way that ensures that if an actor is slower than others it won't build up a backlog?