我開始假設單個核心機器只能運行一個線程。現在我寫了一個基於java/spring的junit測試,它生成20個線程,並使用BigDecimal計算大數的階乘。jvm如何處理運行狀態下的許多線程
我監測到與Visual VM的junit,我可以看到所有20個線程工作,並顯示爲在可視VM中運行(綠色)。據我瞭解,jvm使它們看起來好像它們都在運行,但在非常細化的層面上,每個線程都將輪流用於CPU週期。有沒有一種方法或工具可以通過視覺或數字證明所有線程都相互干擾,並且CPU從一個線程切換到另一個線程?或者換句話說,我想看看給定函數的給定數量的線程,由於CPU的極端上下文切換,飽和點或遞減回報是多少。
我需要解決的實際問題是調整大型Java應用程序中的線程。如果我在示例運行中看不到線程爭用,那麼我將無法在大型應用程序中看到線程爭用/濫用。