溫馨提示×

溫馨提示×

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

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

Java同步調(diào)用和異步調(diào)用怎么實現(xiàn)

發(fā)布時間:2022-09-26 10:45:45 來源:億速云 閱讀:177 作者:iii 欄目:開發(fā)技術(shù)

本篇內(nèi)容主要講解“Java同步調(diào)用和異步調(diào)用怎么實現(xiàn)”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學(xué)習(xí)“Java同步調(diào)用和異步調(diào)用怎么實現(xiàn)”吧!

同步調(diào)用和異步調(diào)用是兩種提交任務(wù)的方式

同步調(diào)用:提交完任務(wù)后,就在原地等待任務(wù)執(zhí)行完畢,拿到運行結(jié)果/返回值后再執(zhí)行下一步,同步調(diào)用下任務(wù)是串行執(zhí)行。

異步調(diào)用:提交完任務(wù)后,不會再原地等待任務(wù)執(zhí)行完畢,直接執(zhí)行下一行代碼,異步調(diào)用時并發(fā)執(zhí)行。

異步調(diào)用,幾乎同時下達(dá)任務(wù)

from concurrent.futures import ProcessPoolExecutorimport os, time,random  
def task(x):
    print("%s is running" % os.getpid())
    time.sleep(random.randint(1,3))    return x**2 if __name__=="__main__":
    p = ProcessPoolExecutor()
    futures = []    for i in range(10):
        future = p.submit(task,i)#返回計算結(jié)果
        futures.append(future)
    p.shutdown(wait=True)#默認(rèn)waiti為True 等待十個進(jìn)程任務(wù)執(zhí)行完,關(guān)閉進(jìn)程池的入口。
    for future in futures:
        print(future.result())
    print("主")
結(jié)果為: 
10760 is running10564 is running12848 is running3928 is running10564 is running12848 is running10760 is running3928 is running10760 is running10564 is running0149162536496481主

如果把p.shutdown(wait=True)去掉,則會出現(xiàn)結(jié)果穿插在進(jìn)程中

2908 is running8092 is running10376 is running13136 is running8092 is running2908 is running018092 is running10376 is running42908 is running10376 is running9162536496481主

同步調(diào)用:

def task(x):
    print("%s is running" % os.getpid())
    time.sleep(random.randint(1,3))    return x**2 if __name__=="__main__":
    p = ProcessPoolExecutor()    for i in range(10):
        res = p.submit(task,i).result()#返回計算結(jié)果
        print(res)
    print("主")
結(jié)果為:8360 is running0472 is running14888 is running412980 is running98360 is running16472 is running254888 is running3612980 is running498360 is running64472 is running81主

到此,相信大家對“Java同步調(diào)用和異步調(diào)用怎么實現(xiàn)”有了更深的了解,不妨來實際操作一番吧!這里是億速云網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!

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

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

AI