迁安做网站哪家好,WordPress用quic协议,工信部网站备案信息怎么查询,做qq代刷网站转自#xff1a; https://www.cnblogs.com/-new/p/7234332.html 前言#xff1a;作为一个后台开发人员#xff0c;我想有必要了解这些基础知识。如果本文有不严谨或者疏忽的地方#xff0c;请指正。 目录
认识cpu、核心与线程java多线程系列#xff08;一#xff09;之j…转自 https://www.cnblogs.com/-new/p/7234332.html 前言作为一个后台开发人员我想有必要了解这些基础知识。如果本文有不严谨或者疏忽的地方请指正。 目录
认识cpu、核心与线程java多线程系列一之java多线程技能java多线程系列二之对象变量的并发访问java多线程系列三之等待通知机制java多线程系列四之ReentrantLock的使用java多线程系列五之synchronized ReentrantLock volatile Atomic 原理分析java多线程系列六之线程池原理及其使用
cpu与核心
物理核
物理核数量cpu数(机子上装的cpu的数量)*每个cpu的核心数
虚拟核
所谓的4核8线程4核指的是物理核心。通过超线程技术用一个物理核模拟两个虚拟核每个核两个线程总数为8线程。在操作系统看来是8个核但是实际上是4个物理核。通过超线程技术可以实现单个物理核实现线程级别的并行计算但是比不上性能两个物理核。
单核cpu和多核cpu
都是一个cpu不同的是每个cpu上的核心数多核cpu是多个单核cpu的替代方案多核cpu减小了体积同时也减少了功耗一个核心只能同时执行一个线程
进程和线程
理解
进程是操作系统进行资源包括cpu、内存、磁盘IO等分配的最小单位线程是cpu调度和分配的基本单位我们打开的微信浏览器都是一个进程进程可能有多个子任务比如微信要接受消息发送消息这些子任务就是线程。资源分配给进程线程共享进程资源。
对比
对比进程线程定义进程是程序运行的一个实体的运行过程是系统进行资源分配和调配的一个独立单位线程是进程运行和执行的最小调度单位系统开销创建撤销切换开销大资源要重新分配和收回仅保存少量寄存器的内容开销小在进程的地址空间执行代码拥有资产资源拥有的基本单位基本上不占资源仅有不可少的资源程序计数器一组寄存器和栈调度资源分配的基本单位独立调度分配的单位安全性进程间相互独立互不影响线程共享一个进程下面的资源可以互相通信和影响地址空间系统赋予的独立的内存地址空间由相关堆栈寄存器和和线程控制表TCB组成寄存器可被用来存储线程内的局部变量
线程切换
cpu给线程分配时间片(也就是分配给线程的时间)执行完时间片后会切换都另一个线程。切换之前会保存线程的状态下次时间片再给这个线程时才能知道当前状态。从保存线程A的状态再到切换到线程B时重新加载线程B的状态的这个过程就叫上下文切换。而上下切换时会消耗大量的cpu时间。
线程开销
上下文切换消耗线程创建和消亡的开销线程需要保存维持线程本地栈会消耗内存
串行并发与并行
串行
多个任务执行时一个执行完再执行另一个。比喻吃完饭再看球赛。
并发
多个线程在单个核心运行同一时间一个线程运行系统不停切换线程看起来像同时运行实际上是线程不停切换。比喻 一会跑去食厅吃饭一会跑去客厅看球赛。
并行
每个线程分配给独立的核心线程同时运行。比喻一边吃饭一边看球赛。
多核下线程数量选择
计算密集型
程序主要为复杂的逻辑判断和复杂的运算。cpu的利用率高不用开太多的线程开太多线程反而会因为线程切换时切换上下文而浪费资源。
IO密集型
程序主要为IO操作比如磁盘IO(读取文件)和网络IO(网络请求)。因为IO操作会阻塞线程cpu利用率不高可以开多点线程阻塞时可以切换到其他就绪线程提高cpu利用率。
总结
提高性能的一种方式提高硬件水平处理速度或核心数。另一种方式根据场景合理设置线程数软件上提高cpu利用率。