Я пытаюсь понять потоки и их поведение.
Основное понимание моей операционной системы состоит в том, что возможное число потоков в рабочем состоянии равно
CPU CORES * THREADS.
Как в моей системе есть процессор i5который имеет 2 ядра и 4 потока, так что максимум 8 потоков могут работать одновременно.
Чтобы проверить мое понимание, я создал 10 простых продолжающихся программ
public class A1 {
public static void main(String[] args){
for(int i=0;;){
System.out.println("Blocking forever");
}
}
}
Но я смогзапустить 10 программ блокировки одновременно.Почему мне удалось запустить больше блокирующих потоков, чем емкости.
Кроме того, во время работы я пытался проверить количество потоков в Thread.getAllStackTraces().keySet()
, но он имел единственную ссылку на одну основную, но главная A1 отличается отОсновной A2 в программе работает самостоятельно
Id =1 | Name =main | state==RUNNABLE
Чего мне не хватает, чтобы понять