Ядро процессора и отношение потоков в Java - PullRequest
1 голос
/ 04 июля 2019

Я пытаюсь понять потоки и их поведение.

Основное понимание моей операционной системы состоит в том, что возможное число потоков в рабочем состоянии равно

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

Чего мне не хватает, чтобы понять

...