Если я не ошибаюсь, JVM полагается на базовую архитектуру ОС для планирования и распространения потоков на другие ядра (когда поток порождается). Однако в моем приложении я не вижу, чтобы это произошло. Каждый поток работает на 0-м ядре, а остальные ядра N-1 находятся в состоянии ожидания. Есть ли какая-то конкретная причина, по которой это происходит, и, более того, как решить эту проблему, чтобы я мог использовать остальные свои ядра?
Я знаю о настройке сходства процессов, но это, в некотором смысле, жесткое программирование процесса для конкретного ядра. Поскольку поток может быть порожден в любой заданной точке, он должен бездействовать, если ядро бездействует.
Фрагмент кода, например
public static void main() {
R1 r1 = new R1();
R2 r2 = new R2();
Thread t1 = new Thread(r1);
Thread t2 = new Thread(r2);
t1.start();
t2.start();
}
Есть предложения?