北京沣登科技发展公司

j***ascript线程等待,js 线程等待

大家好,今天小编关注到一个比较意思的话题,就是关于javascript线程等待的问题,于是小编就整理了3个相关介绍JavaScript线程等待的解答,让我们一起看看吧。

  1. 在JavaScript中,是否存在“同步非阻塞”和“异步阻塞”这两种情况?
  2. JavaScript既是单线程又是异步的,这二者是否冲突,以及有什么区别?
  3. js什么情况下需要开启多线程?

javascript中,是否存在“同步阻塞”和“异步阻塞”这两种情况?

首先,JS是单线程的,没有多线程自然没有同步异步之说。只要是执行JS代码,必然是同步的。JS所谓的同步和异步,和C及Java里的线程异步不是同一个概念,只用在JS执行线程使用AJAX和网络资源处理线程之间切换时是否等待。如果***用同步请求,则在请求完成之前,JS线程会一直挂起等待,必然是阻塞的。使用异步请求,则JS线程会在发起网络请求后继续向下执行。这个阻塞也是在实现引擎的C和C++层面来说的,而非针对JS本身。用户从JS层面真正能够直观体会到"阻塞",是在alert等弹出框显示时。浏览器内核本身并没有阻塞alert,而是在上层实现上去对它进行的阻塞。所以,我的答案是:negative

JAVAScript既是单线程又是异步的,这二者是否冲突,以及有什么区别

J***aScript的这两个特点并不冲突,正是因为它的单线程特点促进了异步的发展

javascript线程等待,js 线程等待div>
图片来源网络,侵删)

J***aScript仅仅是语法面的单线程语言,它的执行引擎是多线程的

我们常说的J***aScript是单线程的,是它并没有提供多线程相关的类库,而浏览器的js执行引擎也为只每一个页面提供一个线程来执行这个页面中的J***aScript程序。由于同一个页面中的程序是单线程的,同步执行与服务器间的请求或其他耗时的程序会导致程序等待,造成页面无法响应其他操作的情况,J***aScript使用异步编程解决这个问题。

浏览器端的异步特性,都是使用多线程来实现的

javascript线程等待,js 线程等待
(图片来源网络,侵删)

比如AJAX请求,浏览器会使用另外的线程来处理AJAX请求,在结束后再将回调函数加入到当前页面的js线程中等待执行。再比如浏览器的事件响应,浏览器也有专门的线程来监听,当监听到***后,再将响应函数加入到当前页面的js线程中等待执行。

js什么情况下需要开启多线程?

js在以下情况下需要开启多线程:

1、 程序包含复杂的计算任务

javascript线程等待,js 线程等待
(图片来源网络,侵删)

主要是利用多线程获取更多的CPU时间(***)。

2、 处理速度较慢的***设备

比如:打印时。再比如网络程序,涉及数据包的收发,时间因素不定。使用独立的线程处理这些任务,可使程序无需专门等待结果

3、 程序设计自身的需要

WINDOWS系统是基于消息循环的抢占式多任务系统,为使消息循环系统不至于阻塞,程序需要多个线程的来共同完成某些任务。

到此,以上就是小编对于j***ascript线程等待的问题就介绍到这了,希望介绍关于j***ascript线程等待的3点解答对大家有用。

[免责声明]本文来源于网络,不代表本站立场,如转载内容涉及版权等问题,请联系邮箱:83115484@qq.com,我们会予以删除相关文章,保证您的权利。 转载请注明出处:http://www.fengdengtech.com/post/53281.html

分享:
扫描分享到社交APP