JAVA實現非同步呼叫執行個體代碼_java

來源:互聯網
上載者:User

在JAVA平台,實現非同步呼叫的角色有如下三個角色:

調用者 取貨憑證   真實資料

一個調用者在調用耗時操作,不能立即返回資料時,先返回一個取貨憑證.然後在過一斷時間後憑取貨憑證來擷取真正的資料.

在調用一個方法的時候,程式會進入被呼叫者法體內,執行完這個被呼叫者法後,才返回執行下一條語句。怎麼做到像ajax非同步請求一樣,發送請求後,沒等請求響應就執行下一條語句呢?對於java的非同步請求,找了許多教材都沒有找到,如thinking in java、core java2 ......等等。受多線程下載工具以及mootools的Request的啟發,做了一個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(); //如果執行失敗  }  rc.onSuccess();//如果執行成功  }} ); t.start(); }}

RequestContent:請求主體

abstract class RequestContent { void onSuccess(){  //執行成功的動作。使用者可以覆蓋此方法 System.out.println("onSuccess"); } void onFailure(){ //執行失敗的動作。使用者可以覆蓋此方法 System.out.println("onFailure"); } abstract void doSomeThing(); //使用者必須實現這個抽象方法,告訴子線程要做什麼}

Test:測試

 new Request(new RequestContent(){  void doSomeThing(){  System.out.println("doSomething");  }  void onSuccess(){  System.out.println("override onSuccess");  } }).start();

以上代碼就是小編給大家分享的java實現非同步呼叫,希望大家喜歡。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.