1. 线程是进程中的一个实体,所以线程本身是不会独立存在的.

  2. 进程是代码在数据集合上的一次运行活动

  3. 进程是操作系统资源分配和调度的基本单位,cpu比较特殊,是分配到线程的,因为真正占用cpu资源的是线程.

4.线程只是进程的一个执行路径,一个进程中至少有一个线程

  1. 在java中,当我们启动一个main函数的时候,就是启动了一个jvm的进程,而main函数所在的线程就是主线程。试想,一个应用程序被启动,这个应用程序中会有多个执行任务,那么这个多个执行任务都是需要去获取cpu资源的,那么这多个执行任务就好比是进程中的多条执行的线程。比如说一个打印机程序,一方面需要去连接打印设备,一方面需要去读取打印的内容.

  2. 进程的特征:
    (a)结构特征: 进程控制块(PCB,相当于人的身份证ID) + 执行程序 + 数据 = 进程实体.
    (b)动态性: 执行过程有生命周期

  3. 进程的三种基本状态:
    (a)就绪状态ready: 进程已获得cpu之外的所有必须的资源,一旦得到cpu的控制权,立刻可以执行
    (b) 运行Running:进程已经获得运行所必须的资源,它正在处理机上执行
    ©阻塞Blocked:正在执行的进程由于发生某件事件而暂时无法执行,便放弃处理机而处于暂停状态,称该进程处于阻塞或者等待状态.

基本概念-1
注: 首先创建一个进程,使得其处于就绪状态,一旦该进程获得cpu资源后,立即从就绪状态变为执行状态,如果此时该进程调用别的进程接口,且别的进程处于阻塞状态,那么此时该进程将进入阻塞状态.
举例: 网易云音乐 ------> 调用外放音响设备等.

就绪,阻塞的进程较多,形成就绪队列,阻塞队列.
分时系统的cpu:假设cpu为某个进程分配了100ms,但是时间到了之后,该进程还没有执行结束,那么cpu会让该进程停止,重新进入就绪队列的末尾,依次等待.

  1. 进程和线程的关系
    基本概念-1
    可以发现:
    1.一个进程中有多个线程,多个线程共享进程的堆和方法区资源.
    2.每个线程有自己的程序计数器和栈区
    3 程序计数器是一块内存区域,用来记录线程要执行的指令地址.
    因为线程是占用cpu资源的,所以在时间片用完,而指令没有执行结束的时候,下次该线程再次获得cpu资源的时候,需要从上次中断的地方继续执行.所以程序技术是每个线程私有,线程之间的程序计数器是相互隔离的.
    4 每个线程的私有的栈区,存储的是该线程的私有的局部变量.
    除此之外,还存有线程调用的栈帧
    5 堆是进程中最大的一块内存区域。堆是被进程下的线程共享的。在进程被创建的时候分配的。主要存放的是new出来的对象。
    6 方法区存放的都是JVM加载的类,常量以及静态变量等。也是线程共享的
    这些都是比较好理解的.

相关文章: