两者区别:

1.资源拥有:进程是资源分配的最小单位,线程是CPU调度的最小单位,同一个进程中的线程共享本进程中的资源(如内存、CPU、IO等),进程间资源独立

2.地址空间:同一个进程的线程共享本进程的地址空间,而进程之间则是独立的地址空间

3.执行方面:进程可以看做一个独立应用来单独执行,而线程则必须依托与进程执行

4.系统开销:进程切换消耗资源更多、开销更大(用户态与内核态的切换)

 

在JAVA中的联系:

运行一个普通程序产生一个进程,进程中会自动创建一个主线程

一个进程对应一个JVM实例,多个线程共享JVM中的堆内存空间

主线程可以创建子线程,一般会后于子线程完成执行(但是可以通过sleep或者join方法让子线程先于父线程完成)