进程就是一个公司,每一个公司都有本身的资源能够调度;公司之间是相互独立的;而线程就是公司中的每一个员工(你,我,他),多个员工一块儿合做,完成任务,公司能够有一名员工或多个,员工之间共享公司的空间浏览器
进程:是cpu分配资源的最小单位;(是能拥有资源和独立运行的最小单位)多线程
线程:是cpu调度的最小单位;(线程是创建在进程的基础上的一次程序运行单位,一个进程中能够有多个线程)dom
放在浏览器中,每打开一个tab页面,其实就是新开了一个进程,在这个进程中,还有ui渲染线程,js引擎线程,http请求线程等。 因此,浏览器是一个多进程的。ui
这主要和js的用途有关,js是做为浏览器的脚本语言,主要是实现用户与浏览器的交互,以及操做dom;这决定了它只能是单线程,不然会带来很复杂的同步问题。 举个例子:若是js被设计了多线程,若是有一个线程要修改一个dom元素,另外一个线程要删除这个dom元素,此时浏览器就会一脸茫然,不知所措。因此,为了不复杂性,从一诞生,JavaScript就是单线程,这已经成了这门语言的核心特征,未来也不会改变线程