js是单线程 这与同步、异步概念有什么关系?
- 没有必然联系。
- 在js中通事件循环机制,形成了js特有的异步并发模型。异步是相对同步来说的,多线程是相对单线程来说的,所以多线程不代表异步。
单线程与多线程的区别
-
线程:线程又称为轻量级进程,是"进程"中某个单一顺序的控制流,它是程序执行流的最小单位。
-
单线程:在单个的程序中可以运行一个线程。
-
多线程:一个程序也可以同时运行多个线程完成不同的工作,称之为多线程。
-
更多参考
单线程多线程详解
同步与异步的区别
关注的是:消息通信机制 (synchronous communication/ asynchronous communication)
同步:就是在发出一个功能调用时,在没有得到结果之前,该调用就不返回。
异步:方法一 立即返回,调用者无需等待其中方法执行完成,就可以继续执行后续方法。
扩展
-
阻塞调用和同步调用也不能等同。
-
对于同步调用来说,很多时候当前线程还是激活的,只是从逻辑上当前函数没有返回而已。
-
阻塞调用是指调用结果返回之前,当前线程会被挂起。
-
非阻塞和阻塞的概念相对应,指在不能立刻得到结果之前,该函数不会阻塞当前线程,而会立刻返回。
-
阻塞和非阻塞关注的是程序在等待调用结果(消息,返回值)时的状态.