进程(os分配资源的最小单位)
1.进程是是程序代码,os为程序分配了内存空间,如何分配的可能根据 运行环境的不同有所不同
2.程序存储在,文件夹里面,进程os加载程序入内存,为其分配内存空间
3.对于java来说,java源代码会先被编译器编译成class文件(这时,编译器相当于一个进程,os为编译器分配空间)
但是java代码还不是进程
4.虚拟器运行 class文件的时候,先类加载,把所有涉及的class文件,不是自己写的就从path路径去找,加载到内存中,
这时,java程序就是进程了,os为java进程分配空间,类加载器进行类加载过程
5.然后每个进程都会有至少一个线程,这个线程去 争夺cpu的资源,cpu资源的管理也是os来管理的
6.你可以认为,进程就是os为这个程序分配的内存空间,而线程才是,cpu要真正的执行这个程序的代码
7.在java中,每个栈空间是一个线程,这些线程去争夺cpu资源,cpu也只执行这些栈中的代码,栈空间也就是,java虚拟机,为实现线程的 一种解决方式
8.可以理解为,栈中的代码就是java线程,一个栈一个线程,从这里也可以看出,
Java线程的空间(栈),也是属于进程的空间(java内内存)结构的一部分
9.进程有共享资源,和非共享资源(栈,线程)
线程(程序 执行 的最小单位)
1。线程,cpu执行的最小单位,去争夺cpu资源的最小单位
2.每个程序,对线程的实现方式是不一样的,例如java,就是用栈空间来实现线程
而mysql也是有自己实现线程的方式
3.有的支持多线程,例如java,可以有多个栈
4.而只有多线程的出现,才会出现 线程安全问题,即对共享资源的读写问题
进程和线程都可以看作是程序的内存空间