溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

javascript有沒有多線程

發(fā)布時(shí)間:2022-06-16 10:09:07 來源:億速云 閱讀:161 作者:zzz 欄目:web開發(fā)

這篇文章主要介紹“javascript有沒有多線程”,在日常操作中,相信很多人在javascript有沒有多線程問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對(duì)大家解答”javascript有沒有多線程”的疑惑有所幫助!接下來,請(qǐng)跟著小編一起來學(xué)習(xí)吧!

JavaScript中沒有多線程;JavaScript是只能在一個(gè)線程中順序執(zhí)行的,因此瀏覽器中的JavaScript解釋器是單線程的,并且不支持多線程;JavaScript即使具有多個(gè)內(nèi)核,也只能使它在稱為主線程的單個(gè)線程上運(yùn)行任務(wù),主要用途是與用戶互動(dòng)以及操作DOM,如果不是單線程的話會(huì)帶來很復(fù)雜的同步問題。

本教程操作環(huán)境:windows10系統(tǒng)、javascript1.8.5版、Dell G3電腦。

javascript有多線程嗎

javascript沒有多線程,JavaScript是單線程的。

作為瀏覽器腳本語言,JavaScript的主要用途是與用戶互動(dòng),以及操作DOM。這決定了它只能是單線程,否則會(huì)帶來很復(fù)雜的同步問題。

一個(gè)線程基本上是一個(gè)單一的過程中,一個(gè)程序可以使用它來完成任務(wù)。每個(gè)線程一次只能執(zhí)行一個(gè)任務(wù):

Task A --> Task B --> Task C

每個(gè)任務(wù)將按順序運(yùn)行;必須先完成一項(xiàng)任務(wù),然后才能開始下一項(xiàng)任務(wù)。

如前所述,許多計(jì)算機(jī)現(xiàn)在具有多個(gè)內(nèi)核,因此可以一次執(zhí)行多個(gè)操作??梢灾С侄鄠€(gè)線程的編程語言可以使用多個(gè)內(nèi)核來同時(shí)完成多個(gè)任務(wù):

Thread 1: Task A --> Task B
Thread 2: Task C --> Task D

傳統(tǒng)上,JavaScript是單線程的。即使具有多個(gè)內(nèi)核,也只能使它在稱為主線程的單個(gè)線程上運(yùn)行任務(wù)。我們上面的示例是這樣運(yùn)行的:

Main thread: Render circles to canvas --> Display alert()

js有多線程嗎,毫無疑問js本身只能單線程運(yùn)行,因此并不支持多線程,下面我們就來分析一下:

首先在瀏覽器中至少會(huì)有三個(gè)線程:js引擎線程(處理js)、gui渲染線程(頁面渲染)、瀏覽器時(shí)間觸發(fā)線程(控制交互)

因?yàn)閖s可以操作dom元素,進(jìn)而會(huì)影響到gui的渲染結(jié)果,因此js引擎線程與gui渲染線程是互斥的,也就是說當(dāng)js引擎線程處于工作狀態(tài)時(shí),gui渲染線程是凍結(jié)的。

js引擎是基于事件驅(qū)動(dòng)的,采用的是單線程運(yùn)行機(jī)制,即js引擎只會(huì)順序的從任務(wù)列表中取任務(wù)并執(zhí)行。

到此,關(guān)于“javascript有沒有多線程”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識(shí),請(qǐng)繼續(xù)關(guān)注億速云網(wǎng)站,小編會(huì)繼續(xù)努力為大家?guī)砀鄬?shí)用的文章!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI