1. 什么是"线程", 和"进程"有什么区别?
  2. 为什么说Js是单线程语言?

Js是一门"单线程"语言

什么是"线程", 和"进程"有什么区别?

"进程"(process)是运行中的"程序"(program)实例, 一个"程序"可以拥有多个"进程".
进程之间彼此独立,有独立的内存空间.

Windows中的Chrome进程大军:
捕获.PNG

"线程"(thread)是操作系统分配CPU控制时间的基本单位, 一个"进程"可以拥有一个或多个"线程",这些"线程"共享进程内的资源.

单个进程内的线程数量:
2.PNG

总结:
"进程"是资源分配的基本单位, "线程"是cpu任务调度的基本单位.

其他资源:
一篇关于进程/线程通俗易懂的文章: https://medium.com/@totoroLiu/program-process-thread-差異-4a360c7345e5

进程是运行中的程序,线程是进程的内部的一个执行序列
进程是资源分配的单元,线程是执行行单元
进程间切换代价大,线程间切换代价小
进程拥有资源多,线程拥有资源少
多个线程共享进程的资源

牛课网关于进程/线程的总结: 进程和线程的区别是什么?__牛客网

为什么说Js是单线程语言?

其实ECSMScript规范里没有"线程"这个概念,这里的"单线程"是相对于"多线程"而言的.
Js本身不具备同一时间做多件事的能力.为了和多线程语言相区别,我们说Js是"单线程"语言.

另外, 这里的Js一般指的是: 在常见的浏览器环境下ECMAScript的实现.
浏览器还支持多线程的Web Worker. (由HTML规范提供).
Node中也有支持多线程/进程的操作.

如何证明JavaScript是单线程的? - 知乎