java 线程数_Java应用中线程数量的合理性评估

本文探讨了Java应用中线程数的合理性评估,指出过多线程可能导致性能问题。通过分析JVM和系统层面的限制,如-Xms、-Xmx、-Xss参数,以及Linux的线程和PID限制,强调了合理设置线程数的重要性。通过实例展示了如何利用jstack分析线程状态,并建议根据业务需求选择合适的线程池,如newFixedThreadPool、newCachedThreadPool等,以提高系统资源利用率。
摘要由CSDN通过智能技术生成

相信大多使用Java的同学曾经都遇到过因为写多线程代码引起的一些不正常现象,所以在使用需要多线程的地方会很小心或者刻意避免使用多线程。但是另一方面,它能够显著提高应用性能、改善应用结构、增加处理器执行效率。如今的主机动辄24、32核,有性能要求的场景下多线程则成为必选方案。其实大多数多线程编程引起的血案无非是以下几点的问题:1)变量的读写无控制;2)资源竞争导致的死锁;3)依赖执行顺序。能够避免掉上面三个问题,接下来如果还要说多线程能够导致的问题,那就是性能问题了。

虽说多线程能够显著提高性能增加处理器的执行效率,但不合理的使用同样能够减慢响应速度,甚至拖垮操作系统。

7aa8c3701e8f5780bd5c5979a6aeb9c1.png

这里举一个栗子,由一个线上报警说起:阳光明媚的一天,收到了一个报警,内容是这么说的

0aa4eab02cca07ff6293af89584ef063.png,很显然,报警阀值是2000。最初收到报警有点方:“应用有异常了!我要赶快到机器上处理下。”,关流量、查看线程数GC以及内存情况、dump文件、重启应用、开流量一气呵成。静下来思考发现其实重点在于你设置的阀值是否合理?是否引起了性能问题?

要评估这个数字并不是一件很难的事情,先

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值