java中线程与CPU核的关系
CPU的发展从早期的单核,发展成现在的多核、双核。
CPU中核心数与线程数的介绍与区别。
核心数是指物理上,也就是硬件上存在几个核心。比如双核就是包括两个相对独立的CPU核心单元组。
线程数是一个逻辑上的概念,就是模拟出的CPU核心数,比如可以通过一个实际的CPU核心单元组模拟出2线程的CPU,一个实体核心,两个逻辑线程,这个单核心的CPU就被模拟成一个类似双核心CPU的功能,可以同时处理两个线程的工作。从任务管理器的性能标签页中看到的就是两个CPU。这种模拟技术被叫做超线程技术。
常说的四核八线,四核指该CPU有四个实体核心,八线指每个CPU运行两个逻辑线程,总共八个线程。
对于CPU来说,线程数 >= 核心数。在不引入超线程技术时,一个核心对应一个线程。通过超线程技术可以使一个核心对应两个线程,也就是说它可以同时运行两个线程。
超线程技术:把一个物理核心模拟成两个逻辑线程,模拟的结果是像两个物理核心一样同一时间运行两个线程,在设备管理器、任务管理器中会显示两个核心,但实际上并不是真正的两核,真单核,虚拟两核。
引入超线程技术的原因:源于多任务处理的需要。线程数越多,越有利于同时运行多个程序,因为线程数等同于在某个瞬间CPU能同时并行处理的任务数。
总结:
单核情况:
1)早期(不引入超线程技术):一个CPU核心对应一个线程,核心数等于线程数。
①单任务阶段:任务串行化执行,一段时间执行一个任务。
②多任务阶段:任务并发执行,一段时间执行多个任务,某一时刻只有一个任务在执行,通过CPU分时间片,上下文切换完成。
2)引入超线程技术:四核八线,用单核情况模拟多核情况。
多核情况:多个单核情况,线程可以实现并行执行,也就是同一时刻,有多个任务在执行,属于物理上的同时执行。
java中线程与CPU核的关系相关推荐
- 关于java中线程yield()方法问题
关于java中线程yield()方法问题 问题一: 我知道yield是用来休眠当前线程,但我查看了资料,又说其不会释放锁,所以我就不解了,其明明会将cpu资源给其他线程,那它不释放锁,其他线程有怎么获 ...
- Java中线程的状态
Java中线程的状态 操作系统中线程的状态 Java中线程的状态 线程状态枚举类 操作系统中线程的状态 从操作系统层面来看,线程通常有以下五种状态,前三种是线程的基本状态. [运行态]:进程正处在处理 ...
- JAVA中线程同步的方法(7种)汇总
JAVA中线程同步的方法(7种)汇总 同步的方法: 一.同步方法 即有synchronized关键字修饰的方法. 由于java的每个对象都有一个内置锁,当用此关键字修饰方法时, 内置锁会保护整个方法. ...
- java中线程的生命周期
文章目录 java中Thread的状态 NEW Runnable BLOCKED WAITING TIMED_WAITING TERMINATED java中线程的生命周期 线程是java中绕不过去的 ...
- java中线程的6种状态
java中线程的状态分为6种. 1. 初始(NEW):新创建了一个线程对象,但还没有调用start()方法. 2. 运行(RUNNABLE):Java线程中将就绪(ready)和运行中(running ...
- java中线程的状态以及线程栈分析
java中线程的状态 状态 说明 NEW 初始状态.线程刚刚被创建,并且start()方法还未被调用 RUNNABLE 运行状态.表示线程正在java虚拟机中执行,但是可能正在等待操作系统的其他资源, ...
- java中线程的生命周期_Java中的线程生命周期– Java中的线程状态
java中线程的生命周期 Understanding Thread Life Cycle in Java and Thread States are very important when you a ...
- linux中进程与cpu核的绑定
linux中进程与cpu核的绑定 一.cpu亲缘性 二.fork用法 三.设置进程与cpu的亲缘性 一.cpu亲缘性 进程绑定CPU亲缘性,使得进程只能在指定的cpu上进行调度或者运行. 绑定cpu亲 ...
- java有关线程的说法错误的是_下面关于Java中线程的说法不正确的是( )
下面关于Java中线程的说法不正确的是( ) 答:调用Thread类的sleep()方法可终止一个线程对象. 从造字角度分析,"河"是形声字,"安"是 字,&q ...
最新文章
- java web里实现 mvc_MVC模式在Java Web应用程序中的实现
- 揭秘百度核心技术:53位专家纯干货分享
- next_permutation函数
- python opencv如何读取本地视频并显示 cv2.VideoCapture()
- pandas基础(part4)--排序/分组/合并
- 约瑟夫(环)问题(Josephu)(单向环形链表)
- LeetCode 167. 两数之和 II - 输入有序数组 思考分析
- matlab 粘连分割代码,【求助】图像中粘连字符切分代码,求注释!!!
- 20165226 实验四 Android程序设计
- 通过反射获取私有方法
- 常用设计模式的小结和实际中的应用
- python爬虫菜鸟教程-Python 应该怎么学?
- 模型融合之stacking和blending
- 数据结构与算法LeetCode题目记录
- 【2020年数据分析岗面试题】不断更新...(含自己的理解、思考和简答)
- JavaScript分解质因数
- Oracle定时任务dbms_job使用详解
- C语言程序设计现代方法第二版,第八章课后编程题——第9题生成贯穿10乘10字符组的随机步法
- 关于LDO和DC-DC,看这一篇就够了!
- 人工智能基础——什么是人工智能