Scheduling a thread is not a JVM activity, but it is an OS activity.if, since the OS detects that the threads are independent of each other and can be executed separately, then it schedules it on a different core.
I'm not sure about the layouts, but I think it works at the application level (it allows you to set an affinity for the processor, but the last decision is made by the OS)
one thing about using kernels - the OS scheduler plans new processes on new kernels, since each process has its own process area independent of other processes (thus, they can be executed in parallel without any obstacles)
Try to create a new process for each thread that will help improve the use of your processor (using more cores), but there are also disadvantages. Each process creates its own process area, so each process requires additional memory (for each thread in your case), if you have a good amount of available memory, you can try this.
if it is just a Linux system, then the sar command is sufficient to monitor the use of the processor core (sar is the basic package in Linux, almost all utilities use sar, so the system overhead will be less).
source share