【问题标题】:Is there any maximum limit to number of running threads in Linux? [duplicate]Linux 中运行线程的数量是否有最大限制? [复制]
【发布时间】:2016-05-18 01:08:42
【问题描述】:

Linux 中运行线程的数量是否有最大限制? 是否可以统计java中所有类的线程总数?

【问题讨论】:

标签: java linux multithreading


【解决方案1】:

从技术上讲,您应该使用 2 X numberOfPhysicalCores 线程以获得最佳性能。 This 帖子描述了最大线程数(感谢@gavriel 找到它:P)

接下来,获取当前JVM中正在运行的线程数:

public static void main(String[] args) throws IOException, InterruptedException {
    ExecutorService service = Executors.newFixedThreadPool(4);
    service.execute(new Runnable() {
        public void run() {
            try {
                Thread.sleep(1000);
            } catch (InterruptedException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
    });
    System.out.println(Thread.getAllStackTraces().size());

}

O/P : 5

【讨论】:

  • 虽然最大数量要高得多,但实际限制是一旦您有足够的线程来保持所有内核都处于忙碌状态,添加更多线程可能只会增加开销并减慢您的应用程序。 +1
  • @PeterLawrey - 我宁愿在这里得到你的答案而不是你的投票:).. 很遗憾这个问题已经结束了
  • @PeterLawrey - OP 询问是否让所有线程在 JVM 中运行。 Thread.getAllStackTraces() 不这样做吗?
  • 你是对的。我错过了有两个问题,所以你的回答是有道理的。你真的只有 5 个线程,包括 GC/JVM 系统线程?
  • @PeterLawrey - 哦,我明白了.. 我不得不说 - “太糟糕了:P
猜你喜欢
  • 1970-01-01
  • 2011-07-23
  • 2018-08-04
  • 1970-01-01
  • 2021-05-12
  • 2016-02-22
  • 2016-05-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多