JavaScript如何實現多執行緒?
我們都知道JS是一種單執行緒語言,即使是一些非同步的事件也是在JS的主執行緒上執行的。像setTimeout、ajax的非同步請求,或者是dom元素的一些事件,都是在JS主執行緒執行的,這些操作並沒有在瀏覽器中開闢新的執行緒去執行,而是當這些非同步操作被操作時或者是被觸發時才進入事件佇列,然後在JS主執行緒中開始執行。
首先說一下瀏覽器的執行緒,瀏覽器中主要的執行緒包括,UI渲染執行緒,JS主執行緒,GUI事件觸發執行緒,http請求執行緒。
JS作為指令碼語言,它的主要用途是與使用者互動,以及操作DOM。這決定了它只能是單執行緒,否則會帶來很複雜的同步問題。
但是單執行緒的語言,有一個很致命的確定。如果說一個指令碼語言在執行時,其中某一塊的功能在執行時耗費了大量的時間,那麼就會造成阻塞。這樣的專案,使用者體驗是非常差的,所以這種現象在專案的開發過程中是不允許存在的。
其實JS為我們提供了一個Worker的類,它的作用就是為了解決這種阻塞的現象。當我們使用這個類的時候,它就會向瀏覽器申請一個新的執行緒。這個執行緒就用來單獨執行一個js檔案。
var worker = new Worker(js檔案路徑);
那麼這個語句就會申請一個執行緒用來執行這個js檔案。這樣也就實現了js的多執行緒。
IT面試題
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70023145/viewspace-2930098/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 如何實現多執行緒執行緒
- 多執行緒實現多工二執行緒
- 多執行緒實現多工一執行緒
- Java多執行緒的實現Java執行緒
- Java多執行緒實現方式Java執行緒
- 【unity】 Loom實現多執行緒UnityOOM執行緒
- Runnable介面實現多執行緒執行緒
- 多執行緒具體實現執行緒
- 多執行緒爬蟲實現(上)執行緒爬蟲
- 用Pthread實現多執行緒操作thread執行緒
- 【連載 02】多執行緒實現執行緒
- 如何使用queue模組實現多執行緒爬蟲執行緒爬蟲
- python多執行緒中訊息佇列如何實現?Python執行緒佇列
- JavaScript多執行緒程式設計JavaScript執行緒程式設計
- 多執行緒併發篇——如何停止執行緒執行緒
- python多執行緒中:如何關閉執行緒?Python執行緒
- 面試-實現多執行緒的方式面試執行緒
- 【QT】QtConcurrent::run()+QThreadPool實現多執行緒QTthread執行緒
- 純Mutex實現多執行緒交替列印Mutex執行緒
- 用多執行緒,實現併發,TCP執行緒TCP
- Python簡單實現多執行緒例子Python執行緒
- Java多執行緒【三種實現方法】Java執行緒
- 多執行緒伺服器的實現執行緒伺服器
- 多執行緒基礎-基礎實現執行緒
- 5招教你實現多執行緒場景下的執行緒安全!執行緒
- Java高併發與多執行緒(二)-----執行緒的實現方式Java執行緒
- 自動化測試應該如何實現多執行緒?執行緒
- Java 執行緒池中的執行緒複用是如何實現的?Java執行緒
- 多執行緒和多執行緒同步執行緒
- Java之實現多執行緒的方式三:實現Callable介面(結合執行緒池使用)Java執行緒
- 【多執行緒高併發程式設計】二 實現多執行緒的幾種方式執行緒程式設計
- Java中如何實現執行緒呢?Java執行緒
- 多執行緒--執行緒管理執行緒
- 執行緒與多執行緒執行緒
- 多執行緒【執行緒池】執行緒
- Java多執行緒之守護執行緒實戰Java執行緒
- Java實現多執行緒的三種方式Java執行緒
- 【QT】子類化QThread實現多執行緒QTthread執行緒