为什么在一个应用程序中可以有数百万个参与者,但是只有10,000个线程太多呢?

Mr.*_*r.X 5 multithreading actor

为什么在一个应用程序中可以有数百万个参与者,但是只有10,000个线程太多呢?创建数百万个演员的实践是可行的,但超过两个线程却不可行吗?演员不能做什么线程(否则我们将一直使用演员!)?

mic*_*hid 4

假设 Scala 和 JVM:

每个线程为其堆栈保留一定量的内存:

java -v
-Xss<size>        set java thread stack size
Run Code Online (Sandbox Code Playgroud)

所以创建很多线程会耗尽你的内存。

另一方面,多个参与者可能共享相同的堆栈,因此对内存的需求要少得多。