JAVA實(shí)現(xiàn)異步調(diào)用實(shí)例代碼
在JAVA平臺(tái),實(shí)現(xiàn)異步調(diào)用的角色有如下三個(gè)角色:
調(diào)用者 取貨憑證 真實(shí)數(shù)據(jù)
一個(gè)調(diào)用者在調(diào)用耗時(shí)操作,不能立即返回?cái)?shù)據(jù)時(shí),先返回一個(gè)取貨憑證.然后在過一斷時(shí)間后憑取貨憑證來獲取真正的數(shù)據(jù).
在調(diào)用一個(gè)方法的時(shí)候,程序會(huì)進(jìn)入被調(diào)用方法體內(nèi),執(zhí)行完這個(gè)被調(diào)用方法后,才返回執(zhí)行下一條語句。怎么做到像ajax異步請(qǐng)求一樣,發(fā)送請(qǐng)求后,沒等請(qǐng)求響應(yīng)就執(zhí)行下一條語句呢?對(duì)于java的異步請(qǐng)求,找了許多教材都沒有找到,如thinking in java、core java2 ......等等。受多線程下載工具以及mootools的Request的啟發(fā),做了一個(gè)java版的Request,不知它的性能如何。
Request:請(qǐng)求載體
public class Request { private RequestContent rc;//請(qǐng)求主體 public Request(RequestContent rc){ this.rc=rc; } protected void start(){ //開始請(qǐng)求 final Thread t=new Thread(new Runnable(){ public void run(){ try{ rc.doSomeThing();//響應(yīng)請(qǐng)求 }catch (Exception e) { e.printStackTrace(); rc.onFailure(); //如果執(zhí)行失敗 } rc.onSuccess();//如果執(zhí)行成功 }} ); t.start(); } }
RequestContent:請(qǐng)求主體
abstract class RequestContent { void onSuccess(){ //執(zhí)行成功的動(dòng)作。用戶可以覆蓋此方法 System.out.println("onSuccess"); } void onFailure(){ //執(zhí)行失敗的動(dòng)作。用戶可以覆蓋此方法 System.out.println("onFailure"); } abstract void doSomeThing(); //用戶必須實(shí)現(xiàn)這個(gè)抽象方法,告訴子線程要做什么 }
Test:測(cè)試
new Request(new RequestContent(){ void doSomeThing(){ System.out.println("doSomething"); } void onSuccess(){ System.out.println("override onSuccess"); } }).start();
以上代碼就是小編給大家分享的java實(shí)現(xiàn)異步調(diào)用,希望大家喜歡。
相關(guān)文章
Java for-each循環(huán)使用難題2例(高級(jí)使用方法)
從Java5起,在Java中有了for-each循環(huán),可以用來循環(huán)遍歷collection和array。For each循環(huán)允許你在無需保持傳統(tǒng)for循環(huán)中的索引,或在使用iterator /ListIterator時(shí)無需調(diào)用while循環(huán)中的hasNext()方法就能遍歷collection2014-04-04SpringBoot-RestTemplate如何實(shí)現(xiàn)調(diào)用第三方API
這篇文章主要介紹了SpringBoot-RestTemplate實(shí)現(xiàn)調(diào)用第三方API的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-08-08springboot+maven多環(huán)境動(dòng)態(tài)配置及編譯失敗的解決方案(步驟詳解)
這篇文章主要介紹了springboot+maven多環(huán)境動(dòng)態(tài)配置及編譯失敗的解決方案,本文通過實(shí)例圖文相結(jié)合給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2023-11-11IntelliJ Idea常用11款插件(提高開發(fā)效率)
這篇文章主要介紹了IntelliJ Idea常用11款插件(提高開發(fā)效率),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-07-07