设置JVM在通过JNI初始化时创建的线程数

时间:2017-08-22 10:03:39

标签: java c++ java-native-interface

有没有办法设置JVM在通过JNI启动时创建的线程数限制?

如果可能,我想设置创建的线程数的最大限制。

2 个答案:

答案 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中创建新线程 - 这在某些情况下可能很方便 - 例如。如果您有一些从客户端运行不受信任的代码的应用程序 - 您可以限制客户端不创建新线程。