原标题:线程多少和什么有关?大神们表示有话要说!

来源:importnew.com/10780.html

Eddie的回答:

Charlie Martin的回答:

benjismith的回答:

Neil Coffey的回答:

McGovernTheory在StackOverflow提了这样一个问题:

Java虚拟机最多支持多少个线程?跟虚拟机开发商有关么?跟操作系统呢?还有其他的因素吗?

Eddie的回答:

这取决于你使用的CPU,操作系统,其他进程正在做的事情,你使用的Java的版本,还有其他的因素。我曾经见过一台Windows服务器在宕机之前有超过6500个线程。当然,大多数线程什么事情也没有做。一旦一台机器上有差不多6500个线程(Java里面),机器就会开始出问题,并变得不稳定。

以我的经验来看,JVM容纳的线程与计算机本身性能是正相关的。

当然了,你要有足够的本机内存,并且给Java分配了足够的内存,让每个线程都可以拥有栈(虚拟机栈),可以做任何想做的事情。任何一台拥有现代CPU(AMD或者是Intel最近的几代)和1-2G内存(取决于操作系统)的机器很容易就可以支持有上千个线程的Java虚拟机。

如果你需要一个更精确的答案,最好是自己做压测。

Charlie Martin的回答:

这里有很多的参数(可以设置)。对于特定的虚拟机,都会有自己的运行时参数。(最大线程数)一定程度上由操作系统决定的:底层的操作系统要给线程提供哪些支持?施加哪些限制?虚拟机使用的是原生的操作系统的线程还是red thread或者green thread?

操作系统提供的支持是另一个问题。如果你向下面这样写Java程序:

img

(不要抱怨语法细节,这才刚刚开始)那你当然希望能得到成百上千个运行的线程。但是,创建一个线程的成本是相对较大的,(过多线程)调度的开销会变得突出。能否让这些线程做有用的事情还不确定。

升级版

好了,迫不及待了!下面是我的一个加了点润色的小的测试程序:

img

在Intel的OS/X 10.5.6系统上,Java 5的输出如下:

img benjismith的回答:

读了Charlie Martin的回复以后,我很想知道堆内存的大小是否能够给创建的线程数带来不同,然后我就被结果惊呆了:在Vista Home Premium SP1系统上,使用JDK 1.6.0_11,设置堆内存的大小从2M到1024M来执行Charlie的测试程序。比如:创建2M的堆内存,我使用的虚拟机参数是:-Xms2m -Xmx2m.

下面是我的测试结果:

img

所以,堆的大小确实很重要。但是,堆大小和最大线程数却是呈反比例关系。这太诡异了!

Neil Coffey的回答:

然后,我认为,你的问题本质上是:(a)你是否可以在你的代码中有效的管理许多的线程,不让他们做很显然是愚蠢的事情(比如:让他们在同一个object对象上等待随后被调用notifyAll…),(b)操作系统是否可以有效地管理这许多线程。基本上来说,如果(a)的答案是”yes”的话,(b)的答案也是”yes”。

很巧的是,你可以在Thread的构造函数中设置线程栈的大小,但是,你不需要也不应该把这个和虚拟机参数弄混淆。

责任编辑:

与java线程有关的,线程多少和什么有关?大神们表示有话要说!相关推荐

  1. 软件开发Linux环境下,java通过JNA调用so报错,求大神解答,感激不尽。

    软件开发Linux环境下,java通过JNA调用so报错,求大神解答,感激不尽. 图片说明 最佳答案: 专家已采纳 先用c等调用一下so,看函数能否正确调用 文章来源:https://ask.csdn ...

  2. 零基础如何学Java?一系列教程带你从小白到大神进阶

    编程语言Java,已经26岁了.从1995年诞生以来,就一直活跃于企业中,名企应用天猫,百度,知乎......都是Java语言编写,就连现在使用广泛的XMind也是Java编写的.Java应用的广泛已 ...

  3. java游戏加入图片,急!急!求大神给这个小游戏加个背景图片

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 package screen;import java.awt.*; import java.awt.event.MouseEvent; import ja ...

  4. java在文本框中输出数据_请教大神,程序结果怎么打印到JTextArea()的文本域里

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 import java.awt.*; import javax.swing.*; import java.awt.event.*; import java ...

  5. java.util.scanner sc_关于Java的Scanner的问题,菜鸟求各大神解答

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 package leetcode; import java.util.ArrayList; import java.util.Collections; i ...

  6. java中userservice是什么,【图片】求助大神~~我在Reaml中注入userService对象启动tomcat就报错【java吧】_百度贴吧...

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 五月 13, 2017 8:26:28 下午 org.apache.catalina.core.StandardContext listenerStart ...

  7. Java中settext是什么意思_求问大神【textField.setText(0);是什么意思】

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 package 连连看; import java.awt.*; import java.awt.event.KeyEvent; import java.a ...

  8. 用java编写在界面中画圆_用java语言编写画随机的圆 十万火急 求大神帮忙!!!...

    展开全部 import java.awt.BorderLayout; import java.awt.Color; import java.awt.Dimension; import java.awt ...

  9. java制表位_java制表位如何应用?大神进来。

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 下面是我的代码. import java.util.Scanner; public class Zuoye7{ public static void ma ...

最新文章

  1. python动态规划详解_经典动态规划例题整理(Python版)
  2. Linux cmake使用入门
  3. 2010 eWEEK 年度产品
  4. 程序员自家种水果,新鲜包邮配送!
  5. ROS入门笔记(七):详解ROS文件系统
  6. python中seaborn库_GitHub - a13544835729/python-seaborn: python seaborn库基础用法
  7. Linux基础学习记录
  8. 初试 Coding.net 在线IDE——WebIDE
  9. linux新硬盘格式化,linux添加新硬盘并格式化
  10. UE4搭建场景与特效文档—地形、水体、植被、雨雾效果
  11. Can You Really Backdoor Federated Learning
  12. opencv毛孔识别(python实现)
  13. 软件系统开发费用的估算——功能点方法 应用实例
  14. Asterisk支持通话录音前语音提示
  15. legacy服务器安装系统,支持UEFI和LEGACY的多系统安装U盘
  16. 详解机器学习中的VC维
  17. SpringBoot一站式功能提供框架(一)整合MybatisPlus、整合Swagger Knif4j、整合Druid多数据源--柚子真好吃
  18. 什么是大病医保?是商业保险吗?包括哪些病?怎么办理?
  19. 夯实JAVA基础(个人笔记)
  20. (实验38)单片机,STM32F4学习笔记,代码讲解【SD卡实验】【正点原子】【原创】

热门文章

  1. 【远程办公】5分钟一拍照、10分钟一截屏 ?
  2. 阿里云数据库四位小伙伴聚齐!共同开启生态合作新篇章!
  3. 将 k8s 制作成 3D 射击游戏,好玩到停不下来 | 文末福利
  4. 迈克尔·戴尔再次到访2019戴尔科技峰会,为“戴尔中国4.0+战略”加个码……
  5. 达梦数据库部署多实例
  6. vue2 父子组件传参 回调函数使用
  7. 企业实战_01_ Mycat 主要作用_01
  8. 数据装载全/存量直接装载到目标表_09
  9. Flowable 数据库表结构 ACT_RE_PROCDEF
  10. Redis 基本数据类型试炼