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

一、同步、異步有什麼區別

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

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

同步(Sync)瀏覽器

所謂同步,就是發出一個功能調用時,在沒有獲得結果以前,該調用就不返回或繼續執行後續操做。
服務器

根據這個定義,Java中全部方法都是同步調用,應爲必需要等到結果後纔會繼續執行。咱們在說同步、異步的時候,通常而言是特指那些須要其餘端協做或者須要必定時間完成的任務。
網絡

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

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

異步(Async)性能

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

對於通知調用者的三種方式,具體以下:回調函數

狀態

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

通知

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

回調

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

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

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

相關文章
相關標籤/搜索