与java线程有关的,线程多少和什么有关?大神们表示有话要说!
原标题:线程多少和什么有关?大神们表示有话要说!
来源: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线程有关的,线程多少和什么有关?大神们表示有话要说!相关推荐
- 软件开发Linux环境下,java通过JNA调用so报错,求大神解答,感激不尽。
软件开发Linux环境下,java通过JNA调用so报错,求大神解答,感激不尽. 图片说明 最佳答案: 专家已采纳 先用c等调用一下so,看函数能否正确调用 文章来源:https://ask.csdn ...
- 零基础如何学Java?一系列教程带你从小白到大神进阶
编程语言Java,已经26岁了.从1995年诞生以来,就一直活跃于企业中,名企应用天猫,百度,知乎......都是Java语言编写,就连现在使用广泛的XMind也是Java编写的.Java应用的广泛已 ...
- java游戏加入图片,急!急!求大神给这个小游戏加个背景图片
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 package screen;import java.awt.*; import java.awt.event.MouseEvent; import ja ...
- java在文本框中输出数据_请教大神,程序结果怎么打印到JTextArea()的文本域里
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 import java.awt.*; import javax.swing.*; import java.awt.event.*; import java ...
- java.util.scanner sc_关于Java的Scanner的问题,菜鸟求各大神解答
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 package leetcode; import java.util.ArrayList; import java.util.Collections; i ...
- java中userservice是什么,【图片】求助大神~~我在Reaml中注入userService对象启动tomcat就报错【java吧】_百度贴吧...
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 五月 13, 2017 8:26:28 下午 org.apache.catalina.core.StandardContext listenerStart ...
- Java中settext是什么意思_求问大神【textField.setText(0);是什么意思】
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 package 连连看; import java.awt.*; import java.awt.event.KeyEvent; import java.a ...
- 用java编写在界面中画圆_用java语言编写画随机的圆 十万火急 求大神帮忙!!!...
展开全部 import java.awt.BorderLayout; import java.awt.Color; import java.awt.Dimension; import java.awt ...
- java制表位_java制表位如何应用?大神进来。
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 下面是我的代码. import java.util.Scanner; public class Zuoye7{ public static void ma ...
最新文章
- python动态规划详解_经典动态规划例题整理(Python版)
- Linux cmake使用入门
- 2010 eWEEK 年度产品
- 程序员自家种水果,新鲜包邮配送!
- ROS入门笔记(七):详解ROS文件系统
- python中seaborn库_GitHub - a13544835729/python-seaborn: python seaborn库基础用法
- Linux基础学习记录
- 初试 Coding.net 在线IDE——WebIDE
- linux新硬盘格式化,linux添加新硬盘并格式化
- UE4搭建场景与特效文档—地形、水体、植被、雨雾效果
- Can You Really Backdoor Federated Learning
- opencv毛孔识别(python实现)
- 软件系统开发费用的估算——功能点方法 应用实例
- Asterisk支持通话录音前语音提示
- legacy服务器安装系统,支持UEFI和LEGACY的多系统安装U盘
- 详解机器学习中的VC维
- SpringBoot一站式功能提供框架(一)整合MybatisPlus、整合Swagger Knif4j、整合Druid多数据源--柚子真好吃
- 什么是大病医保?是商业保险吗?包括哪些病?怎么办理?
- 夯实JAVA基础(个人笔记)
- (实验38)单片机,STM32F4学习笔记,代码讲解【SD卡实验】【正点原子】【原创】
热门文章
- 【远程办公】5分钟一拍照、10分钟一截屏 ?
- 阿里云数据库四位小伙伴聚齐!共同开启生态合作新篇章!
- 将 k8s 制作成 3D 射击游戏,好玩到停不下来 | 文末福利
- 迈克尔·戴尔再次到访2019戴尔科技峰会,为“戴尔中国4.0+战略”加个码……
- 达梦数据库部署多实例
- vue2 父子组件传参 回调函数使用
- 企业实战_01_ Mycat 主要作用_01
- 数据装载全/存量直接装载到目标表_09
- Flowable 数据库表结构 ACT_RE_PROCDEF
- Redis 基本数据类型试炼