我试图了解线程及其行为。
我对操作系统的基本了解是,处于运行状态的线程数可能是
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
我想了解的东西