北屋教程网

专注编程知识分享,从入门到精通的编程学习平台

12核24线程的CPU,如何撑起你Java程序的100个线程?


一、CPU 的线程数是什么?

以AMD 5900X为例子 它 是一款 12 核 24 线程 的桌面级 CPU。这里的“线程”指的是 硬件线程,也叫 逻辑核心,是通过一种叫做 Simultaneous Multithreading(SMT) 的技术实现的。

  • 每个物理核心可以同时处理两个线程(也就是两个指令流)
  • 所以 12 个物理核心 × 2 = 24 个硬件线程
  • 这些线程是由 CPU 内部硬件调度器直接支持的,属于 硬件层面

二、Java 程序中的线程是什么?

Java 中的线程是由 JVM 和操作系统创建和调度的执行单元,属于 软件层面

  • Java 线程是运行在 JVM 进程中的
  • 它们最终会被操作系统映射到 CPU 的硬件线程上执行
  • Java 程序可以创建远远多于 CPU 线程数的线程,操作系统会通过 时间片轮转 来调度它们

三、两者的关系与区别

对比项

AMD 5900X 的线程(硬件)

Java 程序中的线程(软件)

所属层级

CPU 硬件层

JVM + 操作系统软件层

数量限制

固定为 24 个(由硬件决定)

理论上无限(受内存和调度限制)

是否可创建

不可创建(由硬件决定)

可创建(通过 new Thread())

是否可并行执行

是,真正的并行执行

是,但受限于 CPU 核心数

调度方式

由 CPU 内部调度器处理

由操作系统调度器处理

四、 举个例子说明

假设你用 Java 写了一个程序,创建了 100 个线程:

for (int i = 0; i < 100; i++) {
    new Thread(() -> {
        System.out.println("线程:" + Thread.currentThread().getName());
    }).start();
}

在 AMD 5900X 上运行时:

  • 最多只有 24 个线程可以在某一时刻真正并行执行(对应 CPU 的 24 个硬件线程)
  • 剩下的 76 个线程会被操作系统挂起,等待调度
  • 操作系统会通过时间片轮转机制,不断切换线程,让每个线程都“看起来”在运行

五、逻辑图

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言