程序:
是为完成特定任务,用某种语言编写的一组指令集合,即静态的代码。
进程:
作为资源分配的最小单位,系统在运行时会为每个进程分配不同的内存区域;进程是程序的一次执行过程,或是正在运行的一个程序,是一个动态的过程,有它自身的产生,存在和消亡过程;
比如:运行中的QQ,运行中的mp3;
线程:
是cpu调度的最小单位,可以理解为一个程序内部的一条执行路径。
比如:main()方法就对应的一个线程。
public static void main(String[] args){
}
若一个进程同一时间并行执行多个线程:
1.线程作为调度和执行的单位,每个线程拥有独立的运行栈和程序计数器,切换的开销小;
2.一个进程中的多个线程共享相同的内存单元,它们从同一堆中分配对象,可以访问相同的变量和对象;这使得线程间的通信更便捷高效,但多个线程操作共享的系统资源可能带来安全隐患。
一个Java程序Java.exe至少有三个线程:main()主线程,垃圾回收线程,异常处理线程。