开个 QQ, 开了一个进程; 开了迅雷, 开了一个进程. 在 QQ 的这个进程里, 传输文字开一个线程, 传输语音开了一个线程, 弹出对话框又开了一个线程. 所以运行某个软件, 相当于开了一个进程. 在这个软件运行的过程里(在这个进程里), 多个工作支撑的完成 QQ 的运行, 那么这 "多个工作" 分别有一个线程. 所以一个进程管着多个线程.
同步: 任务是一个接着一个执行的, 上一个任务执行完成后才能执行下一个任务. 即在同一时间只能做一件事. 这种 one by one 的动作就是同步.
异步: 是 JS 单线程这种语言解决多任务的一种方法, 将耗时的操作设为异步, 先交给浏览器相关的线程, 来实现这部分耗时的工作. 而主线程继续依次执行任务 (one by one 同步) 不阻塞代码, 后续通过通知的方式来实现异步任务的其他代码执行(当主线程的所有代码都执行完成后)
进程: 简单理解为一个 CPU 在单一时间运行一个进程, 其他进程处于非运行状态(一个进程理解为一个工厂的一个车间)(单个 CPU 一次只能运行一个任务.)
- console.log("start");
- setTimeout(function(){
- console.log("timeout");
- },5000);
- console.log("end");
- // 执行结果如下
- start
- end
- // 等待 5 秒后
- timeout
来源: http://www.bubuko.com/infodetail-3333630.html