cpu个数、核数、线程数、java多线程之间的联系

在现代os系统中,线程是调度的最小单位,而进程是资源(比如:内存)分配的最小单位。

1. java中并发和并行的概念

a. 并行:指两个或多个事件在同一时刻点发生。
b. 并发:指两个或多个事件在同一时间段内发生。

并发,就好似我们在单核系统上玩游戏听歌一样,每一个时刻只有一个程序执行,但是由于CPU中将时间切片(时间片概念),计算机所有的程序交替在每一个时间片中进行调度

2. 线程数,CPU个数,核数之间的关系

  • CPU个数:指物理上的,也是硬件上的核心数。
  • 核数:逻辑上的,简单理解逻辑上模拟的核心数。
  • 并行线程数:指的是某一时刻,能并行执行的线程数,理论上=cpu个数*核数。

3. IO阻塞时,线程会释放CPU吗

当线程处于IO操作时,线程是阻塞的,线程由运行状态切换到等待状态。此时CPU会做上下文切换,以便处理其他程序;当IO操作完成后,cpu会收到一个来自硬盘的中断信号,CPU正在执行的线程因此会被打断,回到ready队列。而先前因I/O而waiting的线程随着I/O的完成也再次回到就绪队列,此时CPU可能会选择他执行。

4. JAVA线程可以同时在多个核上运行吗

操作系统是基于线程调度的,在同一时刻,JAVA进程中不同的线程可能会在不同的核上并行运行。

文章参考

cpu个数、核数、线程数、Java多线程关系的理解

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容