有没有办法设置JVM在通过JNI启动时创建的线程数限制?
如果可能,我想设置创建的线程数的最大限制。
答案 0 :(得分:2)
有没有办法设置JVM线程池的大小...
JVM没有线程池。
有没有办法设置JVM在通过JNI启动时创建的线程数限制?
没有
如果要限制创建的线程数,可以使用自定义SecurityManager
实现此操作。例如:https://stackoverflow.com/a/17536809/139985
或者可能在使用UNIX ulimit -T
或类似的操作系统级别。
但是如果你能信任你在"孩子中运行的Java代码" JVM,最好让它(即开发人员)使用Java SE库(例如带有有限线程池的ExecutorService
)或第三方线程池实现。
答案 1 :(得分:1)
JVM没有线程池,线程由代码创建和管理 - VM只能在退出时终止它们。显然,如果你没有给它所需要的所有线程,这样的受限应用程序将无法工作。您如何选择哪个线程对应用程序至关重要,哪个不对应?这没有意义。
您可以设置特定进程可以在操作系统级别使用的资源,但更确切地说是阻止某些执行不当的进程杀死您的系统。
正如@StephenC所说,有一种方法可以阻止使用自定义SecurityManager在JVM中创建新线程 - 这在某些情况下可能很方便 - 例如。如果您有一些从客户端运行不受信任的代码的应用程序 - 您可以限制客户端不创建新线程。