线程和进程
1、进程
- 程序由指令和数据组成,这些指令要运行,数据要读写,就必须将指令加载至CPU,数据加载至内存。当指令运行过程中还需要用到磁盘、网络等设备,进程就是用来加载指令、管理内存、管理IO的
- 当一个程序运行看,从磁盘加载这个程序的代码至内存,就开启了一个进程。
- 进程可以看作是程序的一个实例,大部分的程序可一个同时运行多个实例进程,也有的程序只启动一个实例进程。
2、线程
-
一个进程可以包含多个线程
-
一个线程就是一个指令流,将指令流中的一条条指令按一定的运行交由CPU执行。
Java中,线程作为最小的调度单位,进程作为资源分配的最小单位,在Windows中进程是不活动的,只是作为线程的容器。 -
Java中,线程作为最小的调度单位,进程作为资源分配的最小单位,在Windows中进程是不活动的,只是作为线程的容器。
进程和线程的关系
-
进程基本上的相互独立的,而线程在进程中,共享进程中的资源。
-
进程之间通信较为复杂
- 同一台计算机的通信称为IPC
- 不同计算机之间的通信需要通过网络,并遵守共同的协议,例如TCP协议、HTTP协议
-
线程之间通信相对来说简单,因为线程共享进程的内存
-
线程更加轻量级,线程上下文切换成本一般要比进程的上下文切换低。