线程机制与事件机制

139 阅读2分钟

小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。

进程与线程

image.png

进程

  • 程序的一次执行,它占有一片独有的内存空间
  • 可以通过windows任务管理器查看进程 可以看出每个程序的内存空间是相互独立的 image.png

线程

  • 是进程内的一个独立执行单元
  • 是程序执行的一个完整流程
  • 是CPU的最小的调度单元

进程与线程

  • 应用程序必须运行在某个进程的某个线程上
  • 一个进程中至少有一个运行的线程:主线程 -->进程启动后自动创建
  • 一个进程中也可以同时运行多个线程:此时我们会说这个程序是多线程运行的
  • 多个进程之间的数据是不能直接共享的 -->内存相互独立(隔离)
  • 线程池(thread pool):保存多个线程对象的容器,实现线程对象的反复利用

引出的问题

① 何为多进程与多线程?

多进程运行: 一应用程序可以同时启动多个实例运行 多线程: 在一个进程内, 同时有多个线程运行

②比较单线程与多线程?

多线程:

  • 优点:能有效提升CPU的利用率
  • 缺点:
    • 创建多线程开销
    • 线程间切换开销
    • 死锁与状态同步问题 单线程:
  • 优点:顺序编程简单易懂
  • 缺点:效率低

③ JS是单线程还是多线程?

JS是单线程运行的 , 但使用H5中的 Web Workers可以多线程运行

  • 只能由一个线程去操作DOM界面

④ 浏览器运行是单线程还是多线程?

都是多线程运行的

⑤ 浏览器运行是单进程还是多进程?

有的是单进程:

  • firefox
  • 老版IE 有的是多进程:
  • chrome
  • 新版IE 如何查看浏览器是否是多进程运行的呢? 任务管理器-->进程

参考来源

  • 尚硅谷js高级