素材巴巴 > 程序开发 >

js异步和同步、阻塞和非阻塞、进程和线程的总结

程序开发 2023-09-19 20:55:30

js异步和同步、阻塞和非阻塞、进程和线程的总结

1.什么是单线程和多线程

在编程语言中,有的语言是多线程的,有的是单线程的,比如java就是多线程的,javascript是单线程的。
也就是说js就像一条流水线,只能在这仅仅一条流水线上干活,不能开辟多个线程;而Java可以通过类继承在开辟个进程。

2.进程和线程的区别

进程:一个项目运行就表示一个进程,进程是操作系统分配和调度资源的基本单位 进程之间是相互独立。

比如浏览器打开多个选项卡,是典型多进程的项目 每一个选项卡都是一个独立的进程 ,他们之间是相互不影响,一个进程关闭了,不会影响另一个进程。

线程:在一个进程中,包含若干个线程,真正干活的是线程,如工厂—>进程 工人—>线程

3.同步和异步的区分

同步含义是“一起”,异步含义是“一边……一边……”

在编程思想里面理解为:

同步:代码的书写顺序和代码的执行顺序一样

异步:代码的书写顺序和代码的执行顺序不一样 例如:setTimeout() btn.onclick = function(){}

    console.log("start")// 先获取button按钮  document文档--->html文档var btn = document.getElementById("btn")   // =  赋值运算符  // 给按钮注册一个点击事件  btn叫事件源  click叫事件名   function(){} 函数  当事件发生时,做什么// 异步代码btn.onclick = function(){alert("登录成功了....")}console.log("end")
 

同步、异步执行顺序:(任务一和任务三是同步任务,任务二是异步任务)

总结:一种是同步任务,另一种是异步任务。同步任务指的是,在主线程上排队执行的任务,只有前一个任务执行完毕,才能执行后一个任务;异步任务指的是,不进入主线程、而进入"异步任务队列"的任务,只有等主线程任务执行完毕,"异步任务队列"开始通知主线程,请求执行任务,该任务才会进入主线程执行。

4.阻塞和非阻塞的区别

总结:同步、异步:只是对于热水壶。普通水壶代表同步;响水壶代表异步。虽然都能干活,但响水壶可以在自己完工之后,提示小杨水开了。

阻塞、非阻塞:仅仅代表小杨,立等的属于阻塞(1,3);干别的事了属于非阻塞(2,4)。

所以在上述同步阻塞、同步非阻塞、异步阻塞、异步非阻塞中,异步非阻塞情况下效率较高。

下面代码属于同步阻塞:

在while循环中一直是死循环,会一直执行循环,下面的任务不能执行,称为同步阻塞。

    console.log(1)  // 同步// 死循环while(true){    // 同步console.log("....")}console.log(2)   // 同步
 

下面代码是异步非阻塞:


 

标签:

上一篇: loading 功能实现(遮罩) 下一篇:
素材巴巴 Copyright © 2013-2021 http://www.sucaibaba.com/. Some Rights Reserved. 备案号:备案中。