您現在的位置是:電腦技術吧?>? 組裝維修 ??>??什么是線程,java線程同步機制??>??正文詳情

什么是線程,java線程同步機制

所凌晴2019-12-23 11:42:50 人圍觀
簡介進程和線程的區別本文主要介紹JavaScript線程和計時機制的相關信息。對于您的朋友,請參考setTimeout和setinterval的JavaScript API文檔,定java線程狀態

這篇文章主要介紹了淺談Javascript線程及定時機制的相關資料,需要的朋友可以參考下  setTimeout、setInterval的使用  Javascript api文檔中定義setTimeout和setInterval第二個參數意義分別為間隔多少毫秒后回調函數被執行和每隔多少毫秒回調函數被執行。

但隨著工作經驗的積累,我們發現事實并非如此。

  比如  ? 1 2 3 4 5 div.onclick=function(){ setTimeout(function(){ document.getElementById('input').focus(); },0); }   就解釋不通了,立即執行就立即執行唄,干嘛還要設置個定時兜個圈子呢。

  又有一天你寫了下面一段代碼  ? 1 2 setTimeout(function(){while(true){}},100); setTimeout(function(){alert('你好');},200);   第一行代碼死循環,結果造成第二行alert始終沒有出現,為啥哩?  單線程or多線程?  原來,Javascript引擎是單線程運行的,瀏覽器只有一個線程在運行JavaScript程序。

因為單線程的設計,所以免去了復雜的多線程同步問題。

  當設置一個定時的時候,瀏覽器會在設定的時間后將你指定的回調函數插入任務序列,而非立即執行。

如果設定定時時間為0,表示立即插入任務序列,而不是立即執行,仍然要等隊列中任務執行完畢,輪到你,你才執行。

  所以下面代碼先彈出2,再彈出1  ? 1 2 3 4 setTimeout(function(){ alert(1); },0); alert(2);   那么,這又有什么實際用途呢?且看下面示例  ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 !DOCTYPE html html head meta charset=utf-8 meta name=viewport content=width=device-width,initial-scale=1.0 titlesetTimeout 0/title /head body 輸入字符,但內容卻不能實時顯示input type=text onkeydown=show(this.value)/ br/ 輸入字符,內容能實時顯示input type=text onkeydown=var self=this;setTimeout(function(){show(self.value)},0)/ div/div script function show(val){ document.getElementsByTagName(div)[0].innerHTML=val; } /script /body /html   這個例子中,js引擎需要執行keydown事件處理程序,然后更新輸入框的value值。

事件處理程序執行時,更新value的任務只能進入隊列等待,所以keydown事件執行時無法得到更新后的value值;但通過setTimeout我們把取value的操作放入隊列,并在更新value之后執行,所以內容就能實時顯示了。

  再回來看看下面的代碼:  ? 1 2 3 4 5 6 7 8 setTimeout(function(){ //do something... setTimeout(arguments.callee,10); },10); setInterval(function(){ //do something... },10);   這兩段代碼看起來效果一樣,是不是。

其實還是有區別的,第一段的回調函數內的setTimeout是js引擎執行后再設定的新的定時,假定從上一個回調處理完到下一個回調開始為一個時間間隔,理論上時間間隔=10ms,后一段代碼=10ms。

  說到這兒,那XMLHttpRequest是不是真的異步呢?是的,請求是異步的,不過這請求是瀏覽器新開的一個線程。

當請求的狀態變更時,如果先前已設置回調,異步線程就將狀態變更事件放入js引擎處理隊列中等待處理,當任務被處理時js引擎始終還是單線程地執行onreadystatechange所設置的函數的。

  以上所述就是本文的全部內容了,希望大家能夠喜歡。

版權聲明:本文由 所凌晴 整理編輯。

原標題:線程的狀態,線程什么意思

轉載注明出處:http://www.dn9ww09s.icu/assemble/15638.html

文章評論

    共有條評論來說兩句吧...

    用戶名:

    驗證碼:

作者推薦

  • 子網掩碼和網關,子網掩碼 網關

    子網掩碼和網關,子網掩碼 網關 相關圖片ip地址子網掩碼網關怎么填本文采用JS對IP、子網掩碼、網關和MAC進行驗證。與您分享以供參考。具體如下:?123456789101314151617181920212223252627ip地址,子網掩碼,默認網關...

  • ios框架,iOS相關框架

    ios框架,iOS相關框架 相關圖片ios網絡框架在Mac和iOS上,可可是一種快速、簡單、功能強大且靈活的日志記錄框架。Cocoa lumberjack與流行的日志框架(如log4j)類似,但它是為Objecios直播框架...

  • 應用程序是什么,安裝應用程序

    應用程序是什么,安裝應用程序 相關圖片手機應用程序在哪里Watchkit應用程序體系結構Watchkit應用程序是運行在Apple watch中的可執行文件。它包括腳本和渲染屏幕所需的資源文件。watchkit擴展是桌面應用程序...

  • linux shell exec,linux的shell命令

    linux shell exec,linux的shell命令 相關圖片python調用shell經常會遇到操作部門需要清除緩存的情況,但緩存始終存在問題。這不是在電腦前處理的方法。我想到了一種通過訪問JSP page%@page language=Javalinux常用命令...

  • 數據庫應用,數據庫使用

    數據庫應用,數據庫使用 相關圖片數據庫什么用1、 在ASP中,用于訪問數據庫的對象稱為ADO(active data objects)。對象有三種:連接、記錄集和命令連接。他們負責打開或連接數據拿數據庫...

  • redis緩存php,redis緩存機制php

    redis緩存php,redis緩存機制php 相關圖片redis緩存常用數據除了Memcache(一個常見的PHP操作類庫)之外,我們還可能非常熟悉內存緩存,即redis。我們與您分享的PHP技術文章是關于如何使用PHP操作redis,怎么使用redis緩存...

  • 兩種方案對比分析方法,對比分析的文章

    兩種方案對比分析方法,對比分析的文章 相關圖片空調方案對比分析這是對Ajax中兩種JSON解析方法的比較分析,非常實用。本文是一篇學習筆記,一篇新手文章,歡迎指教!Eval();//此方法不建議使用JSON。Parse()施工方案對比分析...

  • 字符串怎么轉json,字符串轉json數組

    字符串怎么轉json,字符串轉json數組 相關圖片將json轉換為字符串本文主要介紹了JavaScript中字符串到JSON的兩種方法,一種是使用JS函數eval(),另一種是使用jQuery。Parsejson()。對于朋友,請參字符串和json的轉換...

  • 深入理解并行編程,深入理解python異步編程

    深入理解并行編程,深入理解python異步編程 相關圖片并行編程語言本文主要介紹了對JavaScript編程中原型概念的深入理解,包括原型屬性的使用等相關知識。您可以引用JavaScript的原型對象,這總是令人困惑。甚至有經驗python 異步回調...

  • 第一行代碼引用,excel代碼引用

    第一行代碼引用,excel代碼引用 相關圖片J引用文件本文主要介紹了利用requirejs優化JavaScript引用代碼的方法。Requirejs是一個流行的JS庫。您可以將requirejs作為一種有效的方法來MVC代碼更新所有引用報錯...

熱評文章

  • 快速關鍵代碼,關鍵代碼段

    快速關鍵代碼,關鍵代碼段 相關圖片直接關機的代碼一。用于確定郵箱格式是否正確的代碼://verify-(bool)isvalidateemail:(nsstring*)email{nsstring*emailcnas關鍵代碼...

  • c 多線程編程,多線程編程java

    c  多線程編程,多線程編程java 相關圖片java多線程編程實戰一。簡介:1.1ios有三種多線程編程技術:1。螺紋2。可可nsoperation 3。GCD全名:grjava多線程編程題...

  • 窗口程序用什么語言,應用程序怎么打開

    窗口程序用什么語言,應用程序怎么打開 相關圖片安卓應用開發語言在應用程序中使用多語言通常有兩種方式:一是為用戶提供選擇自己語言的機會;二是根據當前用戶當前的移動設備語言自動將我們的應用程序切換到相應的語言。第...

  • memcache緩存,memcache本地緩存

    memcache緩存,memcache本地緩存 相關圖片memcache分布式緩存一般來說,如果并發量很小,則對不使用緩存技術沒有影響。但是,如果并發量很大,使用緩存技術就顯得非常重要,這可以降低數據庫和服務器的壓力。當然,有很多...

  • mathjax基本語法,c 基本語法

    mathjax基本語法,c  基本語法 相關圖片C語言的基本語法1、 JSP元素1,腳本元素,包括表達式,代碼片段(包括內置類),聲明(成員變量和方法),注釋(輸出和隱藏)2,指令元素,包括頁(語言,擴展,導入,會話,緩沖...

  • asp_html,asp就是html嗎

    asp_html,asp就是html嗎 相關圖片html打開asp頁面巧用ASP語言過濾HTML元素:“過濾HTML”函數名:glhtml“函數:過濾HTML元素”參數:STR----過濾字符“返回值:無HTML字符”******asp和php...

  • 探索發現筆記,探索筆記怎么開啟

    探索發現筆記,探索筆記怎么開啟 相關圖片紫水宮探索筆記什么是UI測試?UI測試是一個自動測試UI和交互的測試組件。UI測試有什么用?它可以通過編寫代碼或記錄開發人員的操作過程和編碼,自動點擊按鈕、查看或輸入文本。用...

  • url帶參數,url傳參數

    url帶參數,url傳參數 相關圖片url參數錯誤本文的例子描述了用JavaScript獲取URL查詢參數的方法。與您分享以供參考。具體實現方法如下:?12345678910函數getqueryvariableurl是啥...

  • weblogic并發連接數,iis最大并發連接數

    weblogic并發連接數,iis最大并發連接數 相關圖片udp并發連接數無法連接到Oracle數據庫。相關錯誤oerr:ora-12519 TNS:未找到適當的服務處理程序。客戶端連接間歇性失敗。Ora-12519原因:LIStomcat并發連接數...

  • 表格中怎么使用函數,函數在表格中怎么使用

    表格中怎么使用函數,函數在表格中怎么使用 相關圖片表格中如何用函數在使用SQL的過程中,我們偶爾會遇到需要更改數據存儲形式的情況。例如,數據庫的表(info)中有一個字段education,用于存儲JSON數組。現在,由于需求表格中函數的應...

關注微信

变脸官网查询