91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

如何在Java項目中異步調用接口

發布時間:2021-03-09 16:19:23 來源:億速云 閱讀:474 作者:Leah 欄目:編程語言

今天就跟大家聊聊有關如何在Java項目中異步調用接口,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。

什么是異步調用?

我的理解就是在方法A中調用方法B,但是方法B很耗時,如果是同步調用的話會等方法B執行完成后才往下執行,如果異步的話就是我調用了方法B,它給我個返回值證明它已接受調用,但是它并沒有完成任務,而我就繼續往下執行。可能有表達不當的地方,歡迎指正。

再用一個生活中的例子吧:

異步調用就是你 喊 你朋友吃飯 ,你朋友說知道了 ,待會忙完去找你 ,你就去做別的了。
同步調用就是你 喊 你朋友吃飯 ,你朋友在忙 ,你就一直在那等,等你朋友忙完了 ,你們一起去。

異步調用有哪些角色?

  • 調用者

  • 取貨憑證

  • 真實數據

一個調用者在調用耗時操作,不能立即返回數據時,先返回一個取貨憑證.然后在過一斷時間后憑取貨憑證來獲取真正的數據.

異步調用的例子

連結調用者和真實數據之間的橋梁是取貨憑證.我們先來看它的實現:

public class FutureTicket{ 
private Object data = null; 
private boolean completed = false;
public synchronized void makeRealData(){ 
if(this.complited) return; 
//獲取數據的耗時操作.這里用Sleep代替 
try{ 
Thread.sleep(10000); 
}catch(Throwable t){} 
this.data = "返回的數據內容"; 
this.completed = true; 
notifyAll(); 
}
public synchronized Object getData(){ 
while(!this.completed)){ 
try{
wait();
}catch(Throwable t){} 
} 
return this.data;
} 
public boolean isCompleted(){ 
return this.completed; 
} 
}

為了簡單化說明(不把它們的關系開得復雜),這里用Objectb代替了真實數據.而真實的實現中我們應該把makeData放在一個真實數據的類中,然后提供一個方法返回真實數據.這樣對于真實數據的處理和取貨憑證解耦.

對于這個取貨憑證,調用者的如何調用是異步調用的關鍵:

publc class Requester{ 
public FutureTicket request(){ 
final FutureTicket ft = new FutureTicket();
//在新線程中調用耗時操作 
new Thread(){ 
public void run(){
ft.makeRealData();
} 
}.start(); 
return ft; 
} 
}

在新線程中啟動耗時操作后,不等待線程的完成立即返回提貨單.

然后調用者可以根據ft.isCompleted()來調用getData()獲取真實數據.當然對ft.isCompleted()測試可以按規定時間間隔輪巡(極低級的方案),也可以在條件不滿足時wait(),然后等待makeData的notifyAll();這樣你就完成了一個用JAVA模擬的異步操作。

看完上述內容,你們對如何在Java項目中異步調用接口有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業資訊頻道,感謝大家的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

洛宁县| 博湖县| 根河市| 宁武县| 龙岩市| 东光县| 苏州市| 同心县| 沅陵县| 徐州市| 长阳| 临朐县| 瓦房店市| 贡觉县| 上饶市| 贵南县| 穆棱市| 昂仁县| 平阳县| 海口市| 蓬安县| 凌源市| 抚松县| 白山市| 鹰潭市| 阜宁县| 蚌埠市| 寿宁县| 漳浦县| 莎车县| 独山县| 凯里市| 洛宁县| 黄骅市| 日土县| 武鸣县| 长宁区| 剑川县| 河源市| 宜州市| 宣武区|