【发布时间】:2016-06-23 00:54:03
【问题描述】:
1):单线程应用程序在用户的 CPU 上是否只使用 1 个线程?提供更多线程会使用多个 CPU 内核吗?如果您声明的线程数超过了用户 CPU 的数量会怎样?
2):只要您的方法不存在同步问题或其他问题,为您的每个方法创建新线程是否会影响性能?
3):我在做游戏,偶尔收垃圾的时候会有明显的卡顿。将垃圾收集器放在自己的线程中会解决这个问题吗?
【问题讨论】:
-
垃圾收集器确实在它自己的线程(或多个线程)中运行。尽管所有 GC 实现都有一个“停止世界”的时刻,但调整 GC 可以产生巨大的影响。 (首先创建更少的垃圾也有帮助。:))这也回答了第一个问题:不,即使是“单线程”Java 应用程序也会有多个线程在运行。
-
但我看到的主要问题是您认为使用多线程是解决性能问题的方法。事实上,这种情况很少发生,并且在一个问题上投入越来越多的线程会很快开始降低您的性能。
-
别叫
System.gc();一堆,那样会导致性能问题,让java自己做吧。 -
我知道不要经常调用它,但我注意到了口吃,所以为了测试它我绑定了 System.gc();到一个键,当我按下它时,果然有口吃。
标签: java multithreading performance