不多说,直接上干货!
https://www.nowcoder.com/ta/review-java/review?tpId=31&tqId=21079&query=&asc=true&order=&page=11
线程与进程的区别归纳:
a.地址空间和其它资源:进程间相互独立,同一进程的各线程间共享。某进程内的线程在其它进程不可见。
b.通信:进程间通信IPC,线程间可以直接读写进程数据段(如全局变量)来进行通信——需要进程同步和互斥手段的辅助,以保证数据的一致性。
c.调度和切换:线程上下文切换比进程上下文切换要快得多。
d.在多线程OS中,进程不是一个可执行的实体。
进程是运行中的程序,线程是进程的内部的一个执行序列。
进程是资源分配的单元,线程是执行行单元。
进程间切换代价大,线程间切换代价小。
进程拥有资源多,线程拥有资源少。
多个线程共享进程的资源。
进程是资源分配单位,线程是cpu调度单位;跟cpu真正打交道的是线程;
进程是运行时的程序,而线程是进程的执行序列;
进程的上下文切换比线程慢得多;
进程中包括多个线程,线程间共享进程资源
1 、进程是执行着的程序,线程是进程内的一个执行序列。一个进程可以拥有多个线程。
2 、进程是资源分配的最小单元,线程是执行调度的最小单元。进程拥有独立的资源,多个线程间共享这些资源。
3、 进程间通信代价较大,线程间通信代价小。
简单帮助记忆
开个QQ,开了一个进程;开了迅雷,开了一个进程。
在QQ的这个进程里,传输文字开一个线程、传输语音开了一个线程、弹出对话框又开了一个线程。
所以运行某个软件,相当于开了一个进程。在这个软件运行的过程里(在这个进程里),多个工作支撑的完成QQ
的运行,那么这“多个工作”分别有一个线程。
所以一个进程管着多个线程。
进程是爹妈,管着众多的线程儿子。