小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。
进程与线程
进程
- 程序的一次执行,它占有一片独有的内存空间
- 可以通过windows任务管理器查看进程
可以看出每个程序的内存空间是相互独立的
线程
- 是进程内的一个独立执行单元
- 是程序执行的一个完整流程
- 是CPU的最小的调度单元
进程与线程
- 应用程序必须运行在某个进程的某个线程上
- 一个进程中至少有一个运行的线程:主线程 -->进程启动后自动创建
- 一个进程中也可以同时运行多个线程:此时我们会说这个程序是多线程运行的
- 多个进程之间的数据是不能直接共享的 -->内存相互独立(隔离)
线程池(thread pool):保存多个线程对象的容器,实现线程对象的反复利用
引出的问题
① 何为多进程与多线程?
多进程运行: 一应用程序可以同时启动多个实例运行 多线程: 在一个进程内, 同时有多个线程运行
②比较单线程与多线程?
多线程:
- 优点:能有效提升CPU的利用率
- 缺点:
- 创建多线程开销
- 线程间切换开销
- 死锁与状态同步问题 单线程:
- 优点:顺序编程简单易懂
- 缺点:效率低
③ JS是单线程还是多线程?
JS是单线程运行的 , 但使用H5中的 Web Workers可以多线程运行
- 只能由一个线程去操作DOM界面
④ 浏览器运行是单线程还是多线程?
都是多线程运行的
⑤ 浏览器运行是单进程还是多进程?
有的是单进程:
- firefox
- 老版IE 有的是多进程:
- chrome
- 新版IE 如何查看浏览器是否是多进程运行的呢? 任务管理器-->进程
参考来源
- 尚硅谷js高级