首頁 >Java >java教程 >java同步和非同步區別

java同步和非同步區別

(*-*)浩
(*-*)浩原創
2019-12-03 14:24:173848瀏覽

java同步和非同步區別

同步:所有的操作都做完,才回傳給使用者。這樣用戶在線上等待的時間太長,給用戶一種卡死了的感覺(就是系統遷移中,點擊了遷移,介面就不動了,但是程式還在執行,卡死了的感覺)。

這種情況下,使用者不能關閉介面,如果關閉了,即遷移程式就中斷了。 (推薦學習:java課程

異步:將用戶要求放入訊息佇列,並回饋給用戶,系統遷移程式已經啟動,你可以關閉瀏覽器了。然後程式再慢慢地去寫入資料庫去。這就是異步。但是用戶沒有卡死的感覺,會告訴你,你的請求系統已經回應了。你可以關閉介面了。

程式的處理的數據,而B執行緒又修改了A執行緒處理的數理。

#顯然這是由於全域資源造成的,有時為了解決此問題,優先考慮使用局部變量,退而求其次使用同步程式碼區塊,出於這樣的安全考慮就必須犧牲系統處理效能,在多執行緒並發時資源掙奪最激烈的地方實現了執行緒的同步機制。

同步:A執行緒要請求某個資源,但此資源正在被B執行緒使用中,因為同步機制存在,A執行緒不到,怎麼辦,A執行緒只能等待下去

異步:A線程要請求某個資源,但是此資源正在被B線程使用中,因為沒有同步機制存在,A線仍然請求的到,A線程無需等待

3. 總結:

(1)同步是安全的,但因為有同步機制的存在,所以性能相對來說會較差

(2)非同步不安全的,容易導致死鎖,這樣一個執行緒死掉可能會導致整個進程崩潰;但因為沒有同步機制的存在,多執行緒非同步執行,效能會有所提升。

4. 同時滿足以下要求才需要同步機制:

(1)多執行緒

(2)存在共享資料競爭

以上是java同步和非同步區別的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn