进程是一个在内存中运行的程序,每个进程都有属于自己的内存空间,一个进程可以有多个线程。
线程是进程中的一个执行任务,负责的是当前的进程中程序的执行。一个进程至少有一个线程,一个进程可以运行多个线程,多个线程可以共享数据。
同类的多个线程共享堆和方法区资源,每个线程有自己的程序计数器,虚拟机栈,和本地栈。所以说系统创建一个线程,或者在线程间进行切换是负担回避进程间的操作,比进程开销小很多,所以线程也叫轻权进程或轻量级进程
线程和进程的区别总结
-
最根本区别:进程是操作系统资源分配的基本单位,而线程是处理器调度任务和执行的基本单位。
-
资源开销方面:每个进程都有独立的代码和数据空间,程序之间切换开销较大,进程的创建需要系统分配内存和cpu,文件句柄等资源,销毁时也要进行回收,开销较大。线程可以看作轻量级的进程,同一线程共享代码和数据空间。每个线程都有自己独立运行栈和程序计数器,线程间切换开销小。
-
包含关系:同一个进程的线程共享本进程的地址空间和资源,但是进程之间地址空间和资源都是相互独立的。
-
影响关系:一个进程崩溃的话,在保护模式下不会对其他进程产生影响,但是一个线程崩溃的话,整个进程都会死掉。
-
执行过程:每个对立的进程都有程序运行的入口,顺序执行和程序触控,但是线程不可以独立执行,必须要依存在应用程序中,有应用程序提供多个线程执行控制,两者可以并发执行。