进销存/线程概述

进程:

  1. 进程是正在运行的程序
  2. 是系统进行资源分配和调用的独立单位
  3. 每一个进程都有它自己的内存空间和系统资源

线程:

  1. 是进程中的单个顺序控制流,是一条执行路径
  2. 单线程:一个程序如果只有一条执行路径,就是单线程程序
  3. 多线程:一个程序刚有多条执行路径,就是多线程程序

线程详细描述:以下摘自 知乎

  1. 线程在进程下行进(单纯的车厢无法运行)
  2. 一个进程可以包含多个线程(一辆火车可以有多个车厢)
  3. 不同进程间数据很难共享(一辆火车上的乘客很难换到另外一辆火车,比如站点换乘)
  4. 同一进程下不同线程间数据很易共享(A车厢换到B车厢很容易)
  5. 进程要比线程消耗更多的计算机资源(采用多列火车相比多个车厢更耗资源)
  6. 进程间不会相互影响,一个线程挂掉将导致整个进程挂掉(一列火车不会影响到另外一列火车,但是如果一列火车上中间的一节车厢着火了,将影响到所有车厢)
  7. 进程可以拓展到多机,进程最多适合多核(不同火车可以开在多个轨道上,同一火车的车厢不能在行进的不同的轨道上)
  8. 进程使用的内存地址可以上锁,即一个线程使用某些共享内存时,其他线程必须等它结束,才能使用这一块内存。(比如火车上的洗手间)-"互斥锁"
  9. 进程使用的内存地址可以限定使用量(比如火车上的餐厅,最多只允许多少人进入,如果满了需要在门口等,等有人出来了才能进去)-“信号量”

线程有两种调度模型:

  1. 分时调度模型:所有线程轮流使用CPU的使用权,平均分配每个线程占用CPU的时间片
  2. 抢占式调度模型:优先让优先级高的线程使用CPU,如果线程的优先级相同,那么随机选择一个,优先级高的线程或的CPU时间片相对多一些

NOTE:

  1. Java使用的是抢占式调度模型
  2. 假如计算机只有一个CPU,那么CPU在某一时刻只能执行一条指令,线程只有得到CPU时间片(也就是使用权),才可以执行指令
  3. 所以说线程程序的执行是 随机性 ,因为谁抢到CPU的使用权不一定

线程生命周期
线程生命周期.png

添加新评论