1. 程式人生 > >基本概念_同步、異步有什麽區別

基本概念_同步、異步有什麽區別

服務器 根據 http 輪詢 tro 服務 協作 客戶 一次

1、同步、異步有什麽區別

在進行網絡編程時,我們通常會看到同步、異步、阻塞、非阻塞四種調用方式以及他們的組合。

其中同步方式、異步方式主要是由客戶端(client)控制的,具體如下:

同步(Sync)

所謂同步,就是發出一個功能調用時,在沒有得到結果之前,該調用就不返回或繼續執行後續操作。

根據這個定義,Java中所有方法都是同步調用,應為必須要等到結果後才會繼續執行。我們在說同步、異步的時候,一般而言是特指那些需要其他端協作或者需要一定時間完成的任務。

簡單來說,同步就是必須一件一件事做,等前一件做完了才能做下一件事。

例如:B/S模式中的表單提交,具體過程是:客戶端提交請求->等待服務器處理->處理完畢返回,在這個過程中客戶端(瀏覽器)不能做其他事。

異步(Async)

異步與同步相對,當一個異步過程調用發出後,調用者在沒有得到結果之前,就可以繼續執行後續操作。當這個調用完成後,一般通過狀態、通知和回調來通知調用者。對於異步調用,調用的返回並不受調用者控制。

對於通知調用者的三種方式,具體如下:

狀態

即監聽被調用者的狀態(輪詢),調用者需要每隔一定時間檢查一次,效率會很低。

通知

當被調用者執行完成後,發出通知告知調用者,無需消耗太多性能。

回調

與通知類似,當被調用者執行完成後,會調用調用者提供的回調函數。

例如:B/S模式中的ajax請求,具體過程是:客戶端發出ajax請求->服務端處理->處理完畢執行客戶端回調,在客戶端(瀏覽器)發出請求後,仍然可以做其他的事。

總結來說,同步和異步的區別:請求發出後,是否需要等待結果,才能繼續執行其他操作。

基本概念_同步、異步有什麽區別