首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

JVM最多支持多少个线程

McGovernTheory在StackOverflow提了这样一个问题: Java虚拟机最多支持多少个线程?跟虚拟机开发商有关么?跟操作系统呢?还有其他的因素吗?...任何一台拥有现代CPU(AMD或者是Intel最近的几代)和1-2G内存(取决于操作系统)的机器很容易就可以支持有上千个线程的Java虚拟机。 如果你需要一个更精确的答案,最好是自己做压测。...(最大线程数)一定程度上由操作系统决定的:底层的操作系统要给线程提供哪些支持?施加哪些限制?虚拟机使用的是原生的操作系统的线程还是red thread或者green thread?...操作系统提供的支持是另一个问题。如果你向下面这样写Java程序: ? (不要抱怨语法细节,这才刚刚开始)那你当然希望能得到成百上千个运行的线程。...Neil Coffey的回答: 绝对理论上的最大线程数是进程的用户地址空间除以线程栈的大小(现实中,如果内存全部给线程栈使用,就不会有能运行的程序了)。

1.8K20

JVM 最多支持多少个线程

原文:www.jb51.net/article/49087.htm McGovernTheory 在 StackOverflow 提了这样一个问题: Java 虚拟机最多支持多少个线程?...任何一台拥有现代 CPU(AMD 或者是 Intel 最近的几代)和 1-2G 内存(取决于操作系统)的机器很容易就可以支持有上千个线程的 Java 虚拟机。...(最大线程数)一定程度上由操作系统决定的:底层的操作系统要给线程提供哪些支持?施加哪些限制?虚拟机使用的是原生的操作系统的线程还是 red thread 或者 green thread?...操作系统提供的支持是另一个问题。...但是,创建一个线程的成本是相对较大的,(过多线程)调度的开销会变得突出。 能否让这些线程做有用的事情还不确定。 升级版 好了,迫不及待了!

85430
您找到你想要的搜索结果了吗?
是的
没有找到

JVM 最多支持多少个线程

我曾经见过一台Windows服务器在宕机之前有超过6500个线程。当然,大多数线程什么事情也没有做。一旦一台机器上有差不多6500个线程(Java里面),机器就会开始出问题,并变得不稳定。...任何一台拥有现代CPU(AMD或者是Intel最近的几代)和1-2G内存(取决于操作系统)的机器很容易就可以支持有上千个线程的Java虚拟机。 如果你需要一个更精确的答案,最好是自己做压测。...(最大线程数)一定程度上由操作系统决定的:底层的操作系统要给线程提供哪些支持?施加哪些限制?虚拟机使用的是原生的操作系统的线程还是red thread或者green thread?...操作系统提供的支持是另一个问题。...但是,创建一个线程的成本是相对较大的,(过多线程)调度的开销会变得突出。能否让这些线程做有用的事情还不确定。 升级版 好了,迫不及待了!

59280

Java虚拟机最多支持多少个线程

作者:miracle1919 来源:http://sina.lt/getP McGovernTheory在StackOverflow提了这样一个问题:Java虚拟机最多支持多少个线程?...任何一台拥有现代CPU(AMD或者是Intel最近的几代)和1-2G内存(取决于操作系统)的机器很容易就可以支持有上千个线程的Java虚拟机。 如果你需要一个更精确的答案,最好是自己做压测。...(最大线程数)一定程度上由操作系统决定的:底层的操作系统要给线程提供哪些支持?施加哪些限制?虚拟机使用的是原生的操作系统的线程还是red thread或者green thread?...操作系统提供的支持是另一个问题。...但是,创建一个线程的成本是相对较大的,(过多线程)调度的开销会变得突出。能否让这些线程做有用的事情还不确定。 升级版 好了,迫不及待了!

64231

JVM最多支持多少个线程?你知道吗?

关于JVM系列面试知识点总结了一个思维导图,分享给大家 jvm 公众号:程序员追风.png McGovernTheory在StackOverflow提了这样一个问题: Java虚拟机最多支持多少个线程...任何一台拥有现代CPU(AMD或者是Intel最近的几代)和1-2G内存(取决于操作系统)的机器很容易就可以支持有上千个线程的Java虚拟机。 如果你需要一个更精确的答案,最好是自己做压测。...(最大线程数)一定程度上由操作系统决定的:底层的操作系统要给线程提供哪些支持?施加哪些限制?虚拟机使用的是原生的操作系统的线程还是red thread或者green thread?...操作系统提供的支持是另一个问题。...但是,创建一个线程的成本是相对较大的,(过多线程)调度的开销会变得突出。能否让这些线程做有用的事情还不确定。 升级版 好了,迫不及待了!

73000

问一下,线程池里面到底该设置多少个线程

线程数=Ncpu/(1-阻塞系数) 二、分析 对于派系一,假设cpu100%运转,即撇开CPU使用率这个因素,线程数=Ncpu*(1+w/c)。...),这里需要上服务器测试具体多少个线程数适合(CPU占比、线程数、总耗时、内存消耗)。...至此结论就是: IO密集型=2Ncpu(可以测试后自己控制大小,2Ncpu一般没问题)(常出现于线程中:数据库数据交互、文件上传下载、网络数据传输等等) 计算密集型=Ncpu(常出现于线程中:复杂算法)...(即使当计算密集型的线程偶尔由于缺失故障或者其他原因而暂停时,这个额外的线程也能确保CPU的时钟周期不会被浪费。)...读者可自己考量 四、总结: 选择线程池并发线程数的因素很多:任务类型、内存等线程中使用到所有资源都需要考虑。

73120

nodejs 多线程支持

nodejs在v10.5.0新增了多线程支持,并且在v11中不需要再加实验特性后缀即可直接使用。 使用起来也是非常简便,核心API就以下几个 ?...这时候就需要提供的Worker构造函数去启动,并且主线程也可以通过workerData去传递数据给工作线程。...const { isMainThread, Worker, workerData // 在主线程为null,工作线程中为主线程传递的值 } = require('worker_threads...} = require('worker_threads'); 3、线程通信 线程通信的用法就和进程通信类似 // 主线程 const worker = new Worker(__filename, {...工作线程中有一些区别的地方,详情在文档 斐波那契数列测试如下: 单线程阻塞运算,三次结算的结果是叠加的 ? 而使用了多线程,它们则是并行计算的 ?

1K10

一台 Java 服务器可以跑多少个线程

Java技术栈 www.javastack.cn 优秀的Java技术公众号 一台Java服务器能跑多少个线程? 这个问题来自一次线上报警如下图,超过了我们的配置阈值。 ?...但这个数量应该是大了,我们都知道线程多了,就会有线程切换,带来性能开销。 当时就想到一台java服务器到底可以跑多少个线程呢?跟什么有关系?现整理如下。...根据计算公式,得出如下结论: 结论1:jvm堆越大,系统创建的线程数量越小。 结论2:当-Xss的值越小,可生成线程数量越多。...sys/vm/max_map_count 增大,数量增多 线程是非常宝贵的资源,我们要严格控制线程的数量,象上面我们的截图情况,显然线程数量过多。...这个是跟我们自己配置了fixed大小的线程池有关系。京东有自己的rpc框架jsf,里面可以针对每个服务端口设置线程大小。

4.1K31

面试官:你是如何评估一个线程池需要设置多少个线程

Java并发编程是大厂第一轮面试中的高频面试题,而线程池又是其中的典型代表,本文将梳理关于线程池的工作机制,并提出灵魂之问:你对线程池的工作机制这么了解,那你在工作中是如何判断一个线程池需要创建多少个线程的呢...1、线程池基本工作原理与面试指南 1.1 java线程池的核心属性 JAVA 线程池的核心属性如下: int corePoolSize 核心线程数 int maximumPoolSize 线程池最大线程数...首先线程池会判断当前已创建的线程是否小于 corePoolSize (核心线程数),如果小于,则无论已创建的线程是否空闲,都会选择创建一个新的线程来执行该任务,直到已创建的线程等于核心线程数。...2)如果任务队列已满,则判断当前线程数量是否超过了最大线程数量,如果未超过,则创建一个新的线程来执行该任务,如果线程池已创建的线程数量等最大线程数,则执行拒绝策略。 量。...其实可以用jstack命令查看一下进程的线程栈,如果发现线程池中大部分线程都处于等待获取任务,则说明线程够用,如下图所示: 如果大部分线程都处于运行状态,可以继续适当调高线程数量。

55840

支持生产阻塞的线程

Paste_Image.png 在并发环境下利用J.U.C提供的Queue实现可以很方便地保证生产和消费过程中的线程安全。...于是一个高效的支持阻塞的生产消费模型就实现了。 等一下,既然J.U.C已经帮我们实现了线程池,为什么还要采用这一套东西?直接用ExecutorService不是更方便?...Paste_Image.png 可以看到,在ThreadPoolExecutor中,BlockingQueue和Consumer部分已经帮我们实现好了,并且直接采用线程池的实现还有很多优势,例如线程数的动态调整等...线程池的实现中,当队列满时会调用构造时传入的RejectedExecutionHandler去拒绝任务的处理。...Paste_Image.png 这样,我们就无需再关心Queue和Consumer的逻辑,只要把精力集中在生产者和消费者线程的实现逻辑上,只管往线程池提交任务就行了。

41810

支持生产阻塞的线程

在并发环境下利用J.U.C提供的Queue实现可以很方便地保证生产和消费过程中的线程安全。...于是一个高效的支持阻塞的生产消费模型就实现了。 等一下,既然J.U.C已经帮我们实现了线程池,为什么还要采用这一套东西?直接用ExecutorService不是更方便?...可以看到,在ThreadPoolExecutor中,BlockingQueue和Consumer部分已经帮我们实现好了,并且直接采用线程池的实现还有很多优势,例如线程数的动态调整等。...线程池的实现中,当队列满时会调用构造时传入的RejectedExecutionHandler去拒绝任务的处理。...这样,我们就无需再关心Queue和Consumer的逻辑,只要把精力集中在生产者和消费者线程的实现逻辑上,只管往线程池提交任务就行了。

72110

ATL源码学习---线程模型支持

1.线程锁的类型   线程锁类型有CComCriticalSection,CComAutoCriticalSection、 CComSafeDeleteCriticalSection、CComAutoDeleteCriticalSection...三个代表不同线程模型的类:CComSingleThreadModel、CComMultiThreadModel 、CComMultiThreadModelNoCS 中均实作了这两个函数。...这样,我们只需要把线程模型当作模板参数传递给对象,对象就能获得正确的引用计数操作动作。...我们在程序中使用“临界区”时,只需要调用这四种操作就可以达到保护数据成员不被其他线程修改的目的。...只要提供给CComObjectRootEx一个代表其线程模型的模板参数,它就能实作出InternalAddRef()、InternalRelease()以及Lock()和UnLock()四个统一的操作界面

86930

面试问我,创建多少个线程合适?我该怎么说

综上两种情况我们可以做出这样的总结: 线程等待时间所占比例越高,需要越多线程线程CPU时间所占比例越高,需要越少线程。...到这里,相信你已经知道第一个【正确】使用多线程的场景了,那创建多少个线程是正确的呢? 创建多少个线程合适? 面试如果问到这个问题,这可是对你理论和实践的统考。...想完全答对,你必须要【精通/精通/精通】小学算术 从上面知道,我们有 CPU 密集型和 I/O 密集型两个场景,不同的场景当然需要的线程数也就不一样了 CPU 密集型程序创建多少个线程合适?...所以对于CPU密集型程序, CPU 核数(逻辑)+ 1 个线程数是比较好的经验值的原因了 I/O密集型程序创建多少个线程合适?...(综合 CPU,内存,硬盘读写速度,网络状况等)了 最后,盲目的增加 CPU 核数也不一定能解决我们的问题,这就要求我们严格的编写并发程序代码了 灵魂追问 我们已经知道创建多少个线程合适了,为什么还要搞一个线程池出来

63730

面试问我,创建多少个线程合适?我该怎么说

综上两种情况我们可以做出这样的总结: 线程等待时间所占比例越高,需要越多线程线程CPU时间所占比例越高,需要越少线程。...到这里,相信你已经知道第一个【正确】使用多线程的场景了,那创建多少个线程是正确的呢? 创建多少个线程合适? 面试如果问到这个问题,这可是对你理论和实践的统考。...想完全答对,你必须要【精通/精通/精通】小学算术 从上面知道,我们有 CPU 密集型和 I/O 密集型两个场景,不同的场景当然需要的线程数也就不一样了 CPU 密集型程序创建多少个线程合适?...所以对于CPU密集型程序, CPU 核数(逻辑)+ 1 个线程数是比较好的经验值的原因了 I/O密集型程序创建多少个线程合适?...(综合 CPU,内存,硬盘读写速度,网络状况等)了 最后,盲目的增加 CPU 核数也不一定能解决我们的问题,这就要求我们严格的编写并发程序代码了 灵魂追问 我们已经知道创建多少个线程合适了,为什么还要搞一个线程池出来

682101

java 对线程安全支持有哪些?

它的原理是将状态封装起来,并对每个公有方法都实行同步,使得每次只有1个线程能够访问容器的状态。...对容器的多个方法的复合操作,是线程不安全的,比如一个线程负责删除,另一个线程负责查询,有可能出现越界的异常 并发容器。...startGate.countDown(); endGate.await(); long end=System.nanoTime(); return end-start; } } 启动门使主线程能够同时释放所有的工作线程...,结束门使得主线程能够等待最后一个线程执行完 FutureTask。...它能阻塞一组线程直到某个事件发生。 与闭锁的区别: 所有线程必须同时到达栅栏位置,才能继续执行。闭锁用于等待事件,而栅栏用于等待其它线程

14710
领券