面試經(jīng)常問道的題目,上網(wǎng)查了下,很多人長篇大論總是說不到點子上,當然并不是說他們說的不對,可能是自己理解的比較片面。 但還是得先概括下: 他們最大的區(qū)別:同步需要等待,而異步無需等待。 例子: 普通B/S模式(同步)AJAX技術(異步) 同步:提交請求->等待服務器處理->處理完畢返回 這個期間客戶端瀏覽器不能干別的事。 異步: 請求通過事件觸發(fā)->服務器處理(這是瀏覽器仍然可以作其他事情)->處理完畢。 說的再通俗易懂點 同步是按順序執(zhí)行,執(zhí)行完一個再執(zhí)行下一個,需要等待、協(xié)調(diào)運行。 異步就是彼此獨立,在等待某事件的過程中繼續(xù)做自己的事,不需要等待這一事件完成后再工作。 線程就是異步實現(xiàn)的一個方式。 異步是讓調(diào)用方法的主線程不需要同步等待另一線程的完成,從而可以讓主線程干其它的事情。 異步和多線程并不是一個同等關系,異步是最終目的,多線程只是我們實現(xiàn)異步的一種手段。 異步是當一個調(diào)用請求發(fā)送給被調(diào)用者,而調(diào)用者不用等待其結(jié)果的返回而可以做其它的事情。 實現(xiàn)異步可以采用多線程技術或則交給另外的進程來處理。 詳解: 同步和異步區(qū)別:(好處和壞處) 同步可以避免出現(xiàn)死鎖,讀臟數(shù)據(jù)的發(fā)生。 一般共享某一資源的時候用,如果每個人都有修改權限,同時修改一個文件,有可能使一個人讀取另一個人已經(jīng)刪除的內(nèi)容,就會出錯, 同步就會按順序來修改。 但是,同步需要等待資源訪問結(jié)束,浪費時間,效率低。
現(xiàn)在cpu都是雙核,四核,異步處理的話可以同時做多項工作,當然必須保證是可以并發(fā)處理的。 但是安全性較低。 拓展: 并發(fā):在操作系統(tǒng)中,是指一個時間段中有幾個程序都處于已啟動運行到運行完畢之間,且這幾個程序都是在同一個處理機上運行。其中兩種并發(fā) 關系分別是同步和互斥 互斥:進程間相互排斥的使用臨界資源的現(xiàn)象,就叫互斥。 并行:在單處理器中多道程序設計系統(tǒng)中,進程被交替執(zhí)行,表現(xiàn)出一種并發(fā)的外部特種;在多處理器系統(tǒng)中,進程不僅可以交替執(zhí)行,而且可以 重疊執(zhí)行。在多處理器上的程序才可實現(xiàn)并行處理。從而可知,并行是針對多處理器而言的。并行是同時發(fā)生的多個并發(fā)事件,具有并發(fā)的含義, 但并發(fā)不一定并行,也亦是說并發(fā)事件之間不一定要同一時刻發(fā)生。 多線程:多線程是程序設計的邏輯層概念,它是進程中并發(fā)運行的一段代碼。多線程可以實現(xiàn)線程間的切換執(zhí)行。 轉(zhuǎn)自http://blog.csdn.net/singit/article/details/47724303 |
|
來自: 昵稱53061720 > 《Java基礎知識》