一、进程
进程是一个计算机中程序对数据的一次运行活动,应用程序在计算机上是以进程的方式运行,对于操作系统而言进程是资源分配与调度最小单位,进程之间相互独立、隔离,各自操作着属于自己的资源。
Java编写的代码都由JVM运行,启动一个Java程序就是启动了一个JVM进程,JVM找到main()方法并运行main()方法就启动了一个线程,一个进程至少含有一个线程。
二、线程
线程是“进程代码段”的一次顺序执行,是CPU调度的最小单位,是为了更好的发挥CPU的性能,各个线程共享进程资源。Java中一个线程大致由三部分组成:
1.线程基本信息:线程ID、名称、状态、优先级、是否是守护线程。
2.栈内存:栈内存是代码中声明局的部变量的存储空间,栈内存是线程私有的,且每个线程都会被分配一个栈内存,在JDK1.8中会为每个线程分配1MB的栈内存。栈内存不受垃圾回收器的管理,因为它是栈,执行结束直接弹栈即可。
3.程序计数器:程序计数器记录下一条指令的代码段的内存地址。
三、区别
1.进程是系统资源的最小分配与调度单位,线程是CPU的最小调度单位。
2.一个进程由若干给线程组成,进程之间相互独立,线程之间共享进程资源。
3.进程的切换比线程慢。