【发布时间】:2015-11-04 06:35:30
【问题描述】:
我正在 Centos 下运行一个 Java 应用程序,并且对您可以设置创建的最大线程数的限制的方法感到好奇。请不要与给定时间的最大线程数混淆。
例如,应用程序每天都会创建和销毁一个线程。在 Linux 设置中是否可以设置只能创建 250 个新线程。然后在第 250 天之前的某个地方(由于创建了其他线程而更早)它会崩溃(抛出异常),因为它已达到创建新线程的允许限制。
【问题讨论】:
-
您说的是内核级线程还是Java级线程?并非所有Java线程都分配有内核线程。
-
另外,您遇到了什么具体的例外情况?似乎您必须创建大量线程才能得到这样的错误。您使用的是什么 Java 版本?
-
我们使用的是 Java 8。问这个问题的原因是我们的生产环境中有一个应用程序开始抛出无法创建新线程运行时错误。我们通过监控得知该应用当时只有 120 个线程。由于我们在测试中从未遇到此错误,因此我试图查看 Linux 环境中的某种设置是否可以创建此错误。我们不断地创建和销毁线程,但从来没有一次运行多个线程。所以内核级线程或Java级线程的设置都适用。
-
您使用的是哪种 Java 8 实现?可能有一个命令行标志来控制它。
-
它不是由命令行标志设置的。我敢肯定。 [root@edd ~]# java -version java version "1.8.0_45" Java(TM) SE Runtime Environment (build 1.8.0_45-b14) Java HotSpot(TM) 64-Bit Server VM (build 25.45-b02, mixed mode )
标签: java linux multithreading