溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

java中同步與異步的區(qū)別是什么

發(fā)布時(shí)間:2020-06-20 16:46:23 來(lái)源:億速云 閱讀:426 作者:Leah 欄目:編程語(yǔ)言

java中同步與異步的區(qū)別是什么?針對(duì)這個(gè)問(wèn)題,這篇文章給出了相對(duì)應(yīng)的分析和解答,希望能幫助更多想解決這個(gè)問(wèn)題的朋友找到更加簡(jiǎn)單易行的辦法。

同步:所有的操作都做完,才返回給用戶。這樣用戶在線等待的時(shí)間太長(zhǎng),給用戶一種卡死了的感覺(jué)(就是系統(tǒng)遷移中,點(diǎn)擊了遷移,界面就不動(dòng)了,但是程序還在執(zhí)行,卡死了的感覺(jué))。

這種情況下,用戶不能關(guān)閉界面,如果關(guān)閉了,即遷移程序就中斷了。

異步:將用戶請(qǐng)求放入消息隊(duì)列,并反饋給用戶,系統(tǒng)遷移程序已經(jīng)啟動(dòng),你可以關(guān)閉瀏覽器了。然后程序再慢慢地去寫(xiě)入數(shù)據(jù)庫(kù)去。這就是異步。但是用戶沒(méi)有卡死的感覺(jué),會(huì)告訴你,你的請(qǐng)求系統(tǒng)已經(jīng)響應(yīng)了。你可以關(guān)閉界面了。

程序的處理的數(shù)據(jù),而B(niǎo)線程又修改了A線程處理的數(shù)理。

顯然這是由于全局資源造成的,有時(shí)為了解決此問(wèn)題,優(yōu)先考慮使用局部變量,退而求其次使用同步代碼塊,出于這樣的安全考慮就必須犧牲系統(tǒng)處理性能,在多線程并發(fā)時(shí)資源掙奪最激烈的地方實(shí)現(xiàn)了線程的同步機(jī)制。

同步:A線程要請(qǐng)求某個(gè)資源,但是此資源正在被B線程使用中,因?yàn)橥綑C(jī)制存在,A線程不到,怎么辦,A線程只能等待下去

異步:A線程要請(qǐng)求某個(gè)資源,但是此資源正在被B線程使用中,因?yàn)闆](méi)有同步機(jī)制存在,A線仍然請(qǐng)求的到,A線程無(wú)需等待

3. 總結(jié):

(1)同步是安全的,但因?yàn)橛型綑C(jī)制的存在,所以性能相對(duì)來(lái)說(shuō)會(huì)較差

(2)異步不安全的,容易導(dǎo)致死鎖,這樣一個(gè)線程死掉可能會(huì)導(dǎo)致整個(gè)進(jìn)程崩潰;但因?yàn)闆](méi)有同步機(jī)制的存在,多線程異步執(zhí)行,性能會(huì)有所提升。

4. 同時(shí)滿足以下要求才需要同步機(jī)制:

(1)多線程

(2)存在共享數(shù)據(jù)競(jìng)爭(zhēng)

看完上述內(nèi)容,你們對(duì)java中同步與異步的區(qū)別有進(jìn)一步的了解嗎?如果還想了解更多相關(guān)內(nèi)容,歡迎關(guān)注億速云行業(yè)資訊頻道,感謝各位的閱讀。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI