js单线程、同步、异步

简介: 什么是单线程?同步、异步的产生?

什么是单线程?同步、异步的产生?

JS属于单线程,虽然存在webworker(创造多线程环境,允许主线程创建线程,将一些任务分配给后者运行),但是webworker也只能进行一些计算任务,不能直接操作DOM。

这是为什么呢?这是因为在浏览器的实际运行中,不能存在同时多个线程操作DOM的现象。比如说,线程a增加DOM,线程b删除DOM。这样页面的绘制就混乱了,所以说需要串行执行。

异步的产生

单线程及任务串行执行,后一个任务需要等待前一个执行完毕方可执行,在这个过程中就出现了等待时间。

但是在ajax网络请求、setTimeout、DOM事件的用户交互(如addEventListener)等,这些任务的执行只是长时间的空等,而并不消耗CPU,因此产生了异步。

这也是推崇js异步的优势之一,我们可以将不相连的分支功能交给对应的异步中处理,这样主线程的效率将大大提升,可以并行去处理其他的功能操作。

异步是主线程cpu跳过任务等待,先处理任务顺序中后续任务。

同步的利用

当异步完后,主线程结束掉了上一个任务处于空闲时,主线程此时会读取相应的callback回调,执行回调中的事件,最大程度的使用cpu,此时便是同步。

同步是主线程按照任务顺序,串行执行任务。

目录
相关文章
|
2月前
|
Java 云计算
Java多线程编程中的同步与互斥机制探析
在当今软件开发领域,多线程编程是一项至关重要的技能。本文将深入探讨Java中的同步与互斥机制,分析其在多线程环境下的应用及实现原理,帮助读者更好地理解并运用这一关键技术。
24 4
|
2月前
|
前端开发 JavaScript
如何处理 JavaScript 中的异步操作和 Promise?
如何处理 JavaScript 中的异步操作和 Promise?
15 1
|
2月前
|
前端开发 JavaScript 数据处理
在JavaScript中,什么是异步函数执行的例子
在JavaScript中,什么是异步函数执行的例子
10 0
|
2月前
|
Python
在Python中,如何保证多个线程之间的同步?
在Python中,如何保证多个线程之间的同步?
24 4
|
2月前
|
Python
如何在Python中实现线程之间的同步和通信?
【2月更文挑战第17天】【2月更文挑战第51篇】如何在Python中实现线程之间的同步和通信?
|
2月前
|
Python
Python学习之路 02 之分支结构
Python学习之路 02 之分支结构
448 0
Python学习之路 02 之分支结构
|
2月前
|
Java Python 开发者
Python 学习之路 01基础入门---【Python安装,Python程序基本组成】
线程池详解与异步任务编排使用案例-xian-cheng-chi-xiang-jie-yu-yi-bu-ren-wu-bian-pai-shi-yong-an-li
449 2
Python 学习之路 01基础入门---【Python安装,Python程序基本组成】
|
3天前
|
JavaScript 大数据 开发者
Node.js的异步I/O模型与事件循环:深度解析
【4月更文挑战第29天】本文深入解析Node.js的异步I/O模型和事件循环机制。Node.js采用单线程与异步I/O,遇到I/O操作时立即返回并继续执行,结果存入回调函数队列。事件循环不断检查并处理I/O事件,通过回调函数通知结果,实现非阻塞和高并发。这种事件驱动编程模型简化了编程,使开发者更专注业务逻辑,为高并发场景提供高效解决方案。
|
8天前
|
监控 安全 Java
一文讲明白Java中线程与进程、并发与并行、同步与异步
一文讲明白Java中线程与进程、并发与并行、同步与异步
7 1
|
9天前
|
JavaScript 前端开发
js开发:请解释同步和异步编程的区别。
同步编程按顺序执行,易阻塞;异步编程不阻塞,提高效率。同步适合简单操作,异步适合并发场景。示例展示了JavaScript中同步和异步函数的使用。
17 0