您好,登錄后才能下訂單哦!
java中同步與異步的區別是什么?針對這個問題,這篇文章給出了相對應的分析和解答,希望能幫助更多想解決這個問題的朋友找到更加簡單易行的辦法。
同步:所有的操作都做完,才返回給用戶。這樣用戶在線等待的時間太長,給用戶一種卡死了的感覺(就是系統遷移中,點擊了遷移,界面就不動了,但是程序還在執行,卡死了的感覺)。
這種情況下,用戶不能關閉界面,如果關閉了,即遷移程序就中斷了。
異步:將用戶請求放入消息隊列,并反饋給用戶,系統遷移程序已經啟動,你可以關閉瀏覽器了。然后程序再慢慢地去寫入數據庫去。這就是異步。但是用戶沒有卡死的感覺,會告訴你,你的請求系統已經響應了。你可以關閉界面了。
程序的處理的數據,而B線程又修改了A線程處理的數理。
顯然這是由于全局資源造成的,有時為了解決此問題,優先考慮使用局部變量,退而求其次使用同步代碼塊,出于這樣的安全考慮就必須犧牲系統處理性能,在多線程并發時資源掙奪最激烈的地方實現了線程的同步機制。
同步:A線程要請求某個資源,但是此資源正在被B線程使用中,因為同步機制存在,A線程不到,怎么辦,A線程只能等待下去
異步:A線程要請求某個資源,但是此資源正在被B線程使用中,因為沒有同步機制存在,A線仍然請求的到,A線程無需等待
3. 總結:
(1)同步是安全的,但因為有同步機制的存在,所以性能相對來說會較差
(2)異步不安全的,容易導致死鎖,這樣一個線程死掉可能會導致整個進程崩潰;但因為沒有同步機制的存在,多線程異步執行,性能會有所提升。
4. 同時滿足以下要求才需要同步機制:
(1)多線程
(2)存在共享數據競爭
看完上述內容,你們對java中同步與異步的區別有進一步的了解嗎?如果還想了解更多相關內容,歡迎關注億速云行業資訊頻道,感謝各位的閱讀。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。