Java中的CPU核心和线程关系

时间:2019-07-04 07:37:00

标签: java multithreading operating-system cpu

我试图了解线程及其行为。

我对操作系统的基本了解是,处于运行状态的线程数可能是

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

我想了解的东西

0 个答案:

没有答案