我开始假设单个核心机器只能运行一个线程。现在我写了一个基于java/spring的junit测试,它生成20个线程,并使用BigDecimal计算大数的阶乘。jvm如何处理运行状态下的许多线程
我监测到与Visual VM的junit,我可以看到所有20个线程工作,并显示为在可视VM中运行(绿色)。据我了解,jvm使它们看起来好像它们都在运行,但在非常细化的层面上,每个线程都将轮流用于CPU周期。有没有一种方法或工具可以通过视觉或数字证明所有线程都相互干扰,并且CPU从一个线程切换到另一个线程?或者换句话说,我想看看给定函数的给定数量的线程,由于CPU的极端上下文切换,饱和点或递减回报是多少。
我需要解决的实际问题是调整大型Java应用程序中的线程。如果我在示例运行中看不到线程争用,那么我将无法在大型应用程序中看到线程争用/滥用。