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月前
|
Python
Python学习之路 02 之分支结构
Python学习之路 02 之分支结构
457 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
472 2
Python 学习之路 01基础入门---【Python安装,Python程序基本组成】
|
2天前
|
前端开发 JavaScript 数据处理
在JavaScript中,异步函数是指什么
【5月更文挑战第9天】JavaScript中的异步函数用于处理非立即完成的操作,如定时器、网络请求等。它们可通过回调函数、Promise或async/await来实现。示例展示了如何使用async/await模拟网络请求:定义异步函数fetchData返回Promise,在另一异步函数processData中使用await等待结果并处理。当fetchData的Promise解析时,data变量接收结果并继续执行后续代码。注意,调用异步函数不会阻塞执行,而是会在适当时间点继续。
8 0
|
3天前
|
安全 C++
C++多线程编程:并发与同步
C++多线程编程:并发与同步
7 0
|
12天前
|
JavaScript 大数据 开发者
Node.js的异步I/O模型与事件循环:深度解析
【4月更文挑战第29天】本文深入解析Node.js的异步I/O模型和事件循环机制。Node.js采用单线程与异步I/O,遇到I/O操作时立即返回并继续执行,结果存入回调函数队列。事件循环不断检查并处理I/O事件,通过回调函数通知结果,实现非阻塞和高并发。这种事件驱动编程模型简化了编程,使开发者更专注业务逻辑,为高并发场景提供高效解决方案。
|
17天前
|
监控 安全 Java
一文讲明白Java中线程与进程、并发与并行、同步与异步
一文讲明白Java中线程与进程、并发与并行、同步与异步
8 1
|
18天前
|
JavaScript 前端开发
js开发:请解释同步和异步编程的区别。
同步编程按顺序执行,易阻塞;异步编程不阻塞,提高效率。同步适合简单操作,异步适合并发场景。示例展示了JavaScript中同步和异步函数的使用。
20 0
|
24天前
|
安全 算法 Java
Java中的多线程并发控制与同步机制
【4月更文挑战第17天】 在现代软件开发中,Java作为一种广泛使用的编程语言,其对多线程的支持是构建高性能应用程序的关键。本文将深入探讨Java中的多线程并发控制与同步机制,包括基本的线程创建、生命周期管理,以及高级的并发工具如synchronized关键字、ReentrantLock类、并发集合和原子变量等。通过理论分析与实例演示,旨在为读者提供一个清晰的多线程并发控制与同步的实现框架,并指出在实践中如何避免常见的并发问题,如死锁、竞态条件和资源争用等。
|
24天前
|
安全 Java 开发者
Java中的多线程并发控制与同步机制
【4月更文挑战第17天】在Java编程中,多线程是实现并行处理和提高程序性能的重要手段。然而,随之而来的线程安全问题和数据一致性问题不容忽视。本文深入剖析了Java中多线程的并发控制与同步机制,包括synchronized关键字、显式锁Lock以及并发集合等高级特性。通过对比分析这些机制的原理和使用场景,旨在帮助开发者理解并合理运用于实际项目中,以解决并发环境下的数据竞争和资源冲突问题。