Ser*_*gio 3 java concurrency multithreading
我正在阅读Java 并发实践,但在下面的段落中有点迷失了,关于可以在 32 位机器上用 Java 创建的线程数:
在 32 位机器上,一个主要的限制因素是线程堆栈的地址空间。每个线程维护两个执行堆栈,一个用于 Java 代码,一个用于本机代码。典型的 JVM 默认值产生大约半兆字节的组合堆栈大小。(您可以使用 -Xss JVM 标志或通过 Thread 构造函数更改此设置。)如果将每个线程的堆栈大小划分为 2 32,则会得到数千或数万个线程的限制。其他因素,例如操作系统限制,可能会施加更严格的限制。
这是什么意思?2 32数字从何而来?如果在 Thread 类中没有将堆栈大小作为参数的构造函数,我如何更改 Thread 构造函数中的堆栈大小?