我在Java Play Framework中有一个应用程序,用户可以同时运行多个任务,并且可能需要很长时间才能完成。我以为我可以使用actorSystem.scheduler()
来做到这一点。但是,我做了一些测试,发现用户可以同时运行多达4个任务,否则任务将占用比我的服务器提供的资源更多的资源。那么有没有办法限制在Akka调度程序上同时运行的任务数量?
答案 0 :(得分:2)
如果要全局限制并发任务,可以将akka max pool size设置为该数字。有关配置的信息,请访问:https://playframework.com/documentation/2.5.x/JavaAkka
具体来说,有一个设置:
akka.actor.default-dispatcher.fork-join-executor.pool-size-max = 64
您可以将其设置为要同时运行的最大任务数。这是将使用的线程数。
答案 1 :(得分:0)
使用池(可以是blockingLinkQueue)来存储调度程序对象。
当用户来时,尝试从池中获取实例,否则等待。这样做2控制你将在你的系统中使用的最大调度程序。