Java中交互方式分為同步和異步兩種:
同步交互:指發送一個請求,需要等待返回,然后才能夠發送下一個請求,有個等待過程;
異步交互:指發送一個請求,不需要等待返回,隨時可以再發送下一個請求,即不需要等待。
相同的地方:都屬於交互方式,都是發送請求。
不同的地方:一個需要等待,一個不需要等待。
簡單而言,同步就是必須一件一件的做事,等前一件事做完后才能做下一件事。而異步這是把事情指派給別人后,接着繼續做下一件事,不必等別人返回的結果。
作用:
同步可以避免讀臟數據的發生,一般共享某一資源的時候用,如果每個人都有修改權限,同時修改一個文件,有可能使一個人讀取另一個人已經刪除的內容,就會出錯,同步就會按順序來修改。但是同步會造成死鎖。
死鎖是指兩個或兩個以上的進程在執行過程中,由於競爭資源或者由於彼此通信而造成的一種阻塞的現象,若無外力作用,它們都將無法推進下去。此時稱系統處於死鎖狀態或系統產生了死鎖,這些永遠在互相等待的進程稱為死鎖進程。
異步則是可以提高效率了,現在cpu都是雙核,四核,異步處理的話可以同時做多項工作,當然必須保證是可以並發處理的。
舉例:
廣播,就是一個異步例子。發起者不關心接收者的狀態。不需要等待接收者的返回信息;
在部分情況下,我們的項目開發中都會優先選擇不需要等待的異步交互方式。
電話,就是一個同步例子。發起者需要等待接收者,接通電話后,通信才開始。需要等待接收者的返回信息
比如銀行的轉賬系統,對數據庫的保存操作等等,都會使用同步交互操作。