JAVA實現(xiàn)異步調(diào)用實例代碼
在JAVA平臺,實現(xiàn)異步調(diào)用的角色有如下三個角色:
調(diào)用者 取貨憑證 真實數(shù)據(jù)
一個調(diào)用者在調(diào)用耗時操作,不能立即返回數(shù)據(jù)時,先返回一個取貨憑證.然后在過一斷時間后憑取貨憑證來獲取真正的數(shù)據(jù).
在調(diào)用一個方法的時候,程序會進入被調(diào)用方法體內(nèi),執(zhí)行完這個被調(diào)用方法后,才返回執(zhí)行下一條語句。怎么做到像ajax異步請求一樣,發(fā)送請求后,沒等請求響應就執(zhí)行下一條語句呢?對于java的異步請求,找了許多教材都沒有找到,如thinking in java、core java2 ......等等。受多線程下載工具以及mootools的Request的啟發(fā),做了一個java版的Request,不知它的性能如何。
Request:請求載體
public class Request {
private RequestContent rc;//請求主體
public Request(RequestContent rc){
this.rc=rc;
}
protected void start(){ //開始請求
final Thread t=new Thread(new Runnable(){
public void run(){
try{
rc.doSomeThing();//響應請求
}catch (Exception e) {
e.printStackTrace();
rc.onFailure(); //如果執(zhí)行失敗
}
rc.onSuccess();//如果執(zhí)行成功
}}
);
t.start();
}
}
RequestContent:請求主體
abstract class RequestContent {
void onSuccess(){ //執(zhí)行成功的動作。用戶可以覆蓋此方法
System.out.println("onSuccess");
}
void onFailure(){ //執(zhí)行失敗的動作。用戶可以覆蓋此方法
System.out.println("onFailure");
}
abstract void doSomeThing(); //用戶必須實現(xiàn)這個抽象方法,告訴子線程要做什么
}
Test:測試
new Request(new RequestContent(){
void doSomeThing(){
System.out.println("doSomething");
}
void onSuccess(){
System.out.println("override onSuccess");
}
}).start();
以上代碼就是小編給大家分享的java實現(xiàn)異步調(diào)用,希望大家喜歡。
相關(guān)文章
idea如何debug看springsecurity的過濾器順序
這篇文章主要介紹了idea如何debug看springsecurity的過濾器順序,文中通過圖文結(jié)合的方式給大家介紹的非常詳細,對大家的學習或工作有一定的幫助,需要的朋友可以參考下2024-04-04
Java多線程循環(huán)柵欄CyclicBarrier正確使用方法
這篇文章主要介紹了Java多線程循環(huán)柵欄CyclicBarrier正確使用方法詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-09-09
Springboot攔截器如何獲取@RequestBody參數(shù)
這篇文章主要介紹了Springboot攔截器如何獲取@RequestBody參數(shù)的操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-06-06
springboot?注解方式批量插入數(shù)據(jù)的實現(xiàn)
一次請求需要往數(shù)據(jù)庫插入多條數(shù)據(jù)時,可以節(jié)省大量時間,本文主要介紹了springboot?注解方式批量插入數(shù)據(jù),文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-03-03

