Я новичок в многопоточности, и я работаю над проектом, в котором я пытаюсь использовать 4 процессора в своей программе Java. Я хотел сделать что-то вроде
int numProcessors = Runtime.getRuntime().availableProcessors();
ExecutorService e = Executors.newFixedThreadPool(numProcessors);
Будет ли это гарантировать, что у меня будет один поток, работающий на процессор? В то время, когда я создаю потоки, система не будет занята, однако через некоторое время она будет чрезвычайно занята. Я думал, что ОС будет выбирать наименее загруженный CPU для создания потоков, но как это работает, если ни один из них не будет особенно занят во время создания?
Кроме того, предполагается, что служба пула потоков будет повторно использовать потоки, но если он увидит, что на другом ЦП будет больше, будет ли он убить поток и создать новую там?