无心流泪
2018-07-08 05:47
采纳率: 28.6%
浏览 2.7k

Java应用中线程是不是开的越多越好,开多少合适,如何减少上下文切换开销?

Java应用中线程是不是开的越多越好,开多少合适,如何减少上下文切换开销?,如何写个shell脚本获取上下文切换的开销?

  • 写回答
  • 好问题 提建议
  • 关注问题
  • 收藏
  • 邀请回答

15条回答 默认 最新

  • jinghao4321 2018-07-08 06:56

    线程数并不是越多越好,具体要根据访问量和机器配置来定。

    评论
    解决 无用
    打赏 举报
  • m0_38120929 2018-07-08 08:06

    显然不是,应该根据生产环境的数据量调整

    评论
    解决 无用
    打赏 举报
  • Fatal Error 2018-07-08 08:33

    线程数一般根据CPU核心数量决定,减少线程开销可以使用线程池

    评论
    解决 无用
    打赏 举报
  • 不是开的越多越好啊?视生产环境的访问量来调整,并且也很容易引起安全问题

    评论
    解决 无用
    打赏 举报
  • leoswkk 2018-07-08 09:04

    线程数并不是越多越好,具体根据实际需求来决定。可以通过线程池来减小上下文切换开销。

    评论
    解决 无用
    打赏 举报
  • qq_22846281 2018-07-08 09:48

    现在都用PHP TP的多

    评论
    解决 无用
    打赏 举报
  • 静水流深zz 2018-07-08 10:08

    书上说,线程最好是cpu核数+1

    评论
    解决 无用
    打赏 举报
  • 单纯哒老王 2018-07-08 11:58

    并不是越多越好,线程多了有安全问题,对服务器硬件要求也高。主要还是根据你的服务器的访问量

    评论
    解决 无用
    打赏 举报
  • tiantianaoye 2018-07-08 12:27

    线程开多了会卡 这个很简单 其实一般计算机一核就一条线程 ——当然现在也有双核双线程双核四线程等等。

    如果不考虑多核多线程的话,所谓的开多线程 只不过是几个线程在抢一条线程的运行权。
    所以开的越多,计算机整体的运行速度就会越慢,不过这个是和计算机的整体配置有关的,所以没有硬性要求开多少条合适,主要是看你用的电脑适合开多少条,一般普通的家用机 java线程开到5条以下基本对电脑没太大影响,好点的电脑甚至开到10条也能流畅运行,但是再多肯定就会有影响了。

    评论
    解决 无用
    打赏 举报
  • stguoyang 2018-07-08 14:23

    线程太多会对服务器性能有比较大的要求,即使java服务器性能足够业务并发量多,太多也会对数据库或其他资源造成影响,所以线程不是愈多愈好,需要根据性能和资源来分析确定。

    评论
    解决 无用
    打赏 举报
  • duxin_ 2018-07-08 15:12

    看了一遍所有人的回答,都是在讨论线程和进程本身。我想说的是,你这个问题本身就有问题。你没有说清楚,你想解决的是什么问题。通常问题领域就两种:1. 计算密集型。2. I/O密集型。不同的场景下,最优解对于线程数量的要求是不一样的。如果你想知道一个准确的基于科学理论和数学逻辑的答案,请参考:java并发实践(Java Concurrency in Practice)

    评论
    解决 无用
    打赏 举报
  • hisokalee 2018-07-09 01:49

    如果高并发,解决10k,可以考虑netty,线程上下文切换可以选择测试一下

    评论
    解决 无用
    打赏 举报
  • 程序猿届的彭于晏 2018-07-09 07:34

    线程不是越多越好,实际需要多少开多少,建议使用线程池来管理线程

    评论
    解决 无用
    打赏 举报
  • weixin_41708212 2018-07-09 07:50

    一般使用CPU核数的1倍~2倍即可。

    评论
    解决 无用
    打赏 举报
  • o_xyz 2018-07-16 07:18

    显然不是越多越好,一般没有多线程的系统,高cpu任务,开到cpu数就差不多。。
    如果是有多线程的开到总核心数*65%差不多

    评论
    解决 无用
    打赏 举报

相关推荐 更多相似问题