Playframework 播放框架和线程池

Playframework 播放框架和线程池,playframework,threadpool,Playframework,Threadpool,Play framework向我的应用程序公开的线程数量有限制吗?Play应用程序中的线程大小是否如此珍贵?如果我在应用程序中使用自己创建的线程池,而不使用Play提供的线程池,该怎么办。这是推荐的吗?有人能解释一下Play是如何处理线程的吗?Play应用程序中线程的限制基本上是由分配给VM的最大内存决定的。每个线程都会消耗相当多的内存,因为它们有自己的堆栈。从本质上讲,线程的最大数量取决于将传递给JVM的参数和计算机上的RAM总量等 您应该让Play为您管理线程。配置文档位于。Play设计的一

Play framework向我的应用程序公开的线程数量有限制吗?Play应用程序中的线程大小是否如此珍贵?如果我在应用程序中使用自己创建的线程池,而不使用Play提供的线程池,该怎么办。这是推荐的吗?有人能解释一下Play是如何处理线程的吗?

Play应用程序中线程的限制基本上是由分配给VM的最大内存决定的。每个线程都会消耗相当多的内存,因为它们有自己的堆栈。从本质上讲,线程的最大数量取决于将传递给JVM的参数和计算机上的RAM总量等

您应该让Play为您管理线程。配置文档位于。Play设计的一部分是最小化所需的线程数,因此,除非执行大量阻塞调用,否则不需要触碰它

Play使用Akka处理线程。可以找到内部actor系统的配置。其中最有趣的部分是
并行度因子
并行度最大值
。如果我们看看Akka的评论:

# The parallelism factor is used to determine thread pool size using the
# following formula: ceil(available processors * factor). Resulting size
# is then bounded by the parallelism-min and parallelism-max values.
parallelism-factor = 3.0

# Max number of threads to cap factor-based parallelism number to
parallelism-max = 64

根据参考配置,默认情况下,Play的
并行系数
设置为1。这意味着默认情况下,Play的线程池将等于可用处理器的数量,最多24个。

有没有接受者?有什么建议吗?如果我使用自己的ExecutionContext来阻止操作,而不使用Play中的ExecutionContext会怎么样?这是一个好方法吗?老实说,这不会有太大的区别,因为无论哪种方式,你都在使用线程。如果你打算执行阻塞调用,你应该做的唯一一件事就是使用配置增加游戏的线程池大小。看看monifu,它似乎使用了不同的执行上下文,可以创建和生成独立于我从游戏中获得的线程池的线程?是的,你可以这样做,但你应该避免这样做,除非它是一个图书馆。这是唯一的好习惯,你可以做你想做的。我想我可能不理解你的问题。