1.进程
程序由指令和数据组成,指令要运行,数据要读取,必须把指令读到CPU,在指令运行过程中要用到外部设备,网络等。进程就是用来加载指令的,管理内存,IO的
当一个程序被运行,从磁盘加载这个程序的代码至内存,这时就开启了一个进程
进程可以视为程序的一个实例,大部分程序可以同时运行多个进程实例。(windows上的各种软件,浏览器,画图),少部分只能运行一个(网易云音乐)
2.线程
一个进程之内可以分为多个线程
一个线程就是一个指令流,将指令流的指令按顺序交给cpu运行
java中,线程作为最小调度单位,进程作为资源分配的最小单位,在windows中进程是没有活动的,只是作为线程的容器。
3.两者之间区别
进程相互独立,线程在进程之中,是进程的子集。
进程拥有共享的资源,供其内部线程共享
进程间通信复杂
通一台计算机内的进程通信为ipc
不同计算机之间通信需要网络,并遵守一定的协议,比如http
线程通信相对简单,因为共享进程内的内存,比如多个线程共享一个变量
线程更轻量,线程上下文切换成本一般比进程上下文切换低。