1.进程
1.1 程序执行时的一个实例
1.2 每个进程都有独立的内存地址空间
1.3 系统进行资源分配和调度的基本单位
1.4 进程里面的堆 , 是一个进程中个最大的一块内存 , 被线程中的所有线程共享 , 进程创建时分配,主要存放 new 创建的对象实例
1.5 进程里的方法区 , 用来存放进程中的代码片段 ,是线程共享的
1.6 在多线程的OS中 , 进程不是一个可执行的实体 , 即一个进程至少创建一个线程去执行代码
2 线程
2.1 线程中的一个实体
2.2 进程的一个执行路径
2.3 CPU调度和分派的基本单位
2.4 线程本身不会独立存在
2.5 当前线程CPU时间片用完后 , 会让出CPU等下次了轮到自己的时候再执行
2.6 系统不会为线程分配内存 ,线程组之间只能共享所属线程的资源
2.7 线程只拥有在运行中必不可少的资源(如程序计算器,栈)
2.8 线程里的程序计算器就是为了记录该线程让出 CPU 时候执行的地址 , 待再次分配到时间片时候就可以从自己私有的计数器指定地址继续执行
2.9 每个线程有自己的栈资源 , 用于存储该线程的局部变量和调用栈 ,其他线程 , 不能访问
3 关系
3.1 一个程序至少有一个进程 , 一个进程至少有一个线程 , 进程中的多个线程是共享进程的资源
3.2 Java 中我们启动 main 的函数时候就启动一个 jvn 的进程 , 而main函数所在线程就是这个进程中的一个线程 , 也叫主线程
3.3 一个进程中有多个线程 , 多个线程共享进程的堆和方法区的资源 , 但是每个线程有自己的程序计数器 ,栈区域