A escala usada por top
é 100% quando um núcleo é totalmente usado. Ou quando um núcleo é de 20% e um segundo é de 80%. Isso leva a resultados estranhos em computadores multicore porque pode facilmente ultrapassar 100%.
Se você tem 8 núcleos, então top
pode exibir de 0% (sistema inativo) a 800% (potência total).
Seu programa está apenas usando seus 4 núcleos com hyperthreading (portanto, 8 núcleos virtuais) na capacidade máxima. Então o topo te dá quase 8 x 100% = 800%.
Você não pode dizer explicitamente à JVM para usar um único encadeamento, ele usará vários encadeamentos para fazer seu trabalho, mesmo se você usar apenas um único encadeamento em seu aplicativo.
Você pode usar o utilitário htop
como uma alternativa top
melhor. Você verá seu programa usando todos os 8 núcleos.