我需要用较少(即3个)演员执行一些(比方说10个)任务。
但我不想在开始时分发所有任务,因为执行时间可能会有所不同。这就是为什么我需要向他们发送1个任务,当任何完成时他将被赋予一项新任务。这样,当第一个任务需要3秒钟并且只能休息时,可以在3秒内完成约0.5秒的作业。
有10个任务列表:
(() => Thread.sleep(3000); println("done long"}) :: (1..9).map({() => println("done short")})
我想要输出:
done short
done short
done short
done short
done short
done short
done short
done short
done short
done long
我可以写经理演员,让演员回到经理并再次重新分配工作,但我希望在Scala或Akka中找到一个固定的解决方案。