2017-06-13 8 views
0

サードパーティAPIの汎用ソリューションを実装しようとしていますが(非同期の方法で動作しますが)、アプリケーションの残りの呼び出しをどのように実装できるかはわかりません同期された方法。基本的にAPIはリクエストを受け取り、処理してから終了したときに応答しますが、他のリクエストも受け取ります。だから私はAPIの応答メソッドをスレッドに入れて、モニターが連続的に応答するかどうかを時間間隔でapiの応答メソッドを呼び出すことで行う。私は別のように、単一のメソッドを持っているこのAPIの上にラッパーを書きたい一般的な方法でメソッド呼び出しを待機させる方法

public APIReponse 
{ 
private String UUID; 
private String response_string 
// Getter setter 
} 

public void api_execute(string UUID,String request); 

APIレスポンスオブジェクト:

APIは、リクエストなどを取るためのインタフェースを持っています私のアプリケーションのオブジェクトはこれを使用して要求を送信し、応答を受け取ります。 UUIDはこのラッパークラスによって作成されますが、私は何らかの応答を受け取るまで呼び出し元オブジェクトを待つ方法を知りませんし、呼び出し元がどの要求を送信するかを区別します。私はここでオブザーバパターンを使って考えていましたが、このシナリオには合わないようです。誰かが私にこれをどのように実装できるかのヒントを教えてもらえますか?

答えて

0

あなたは、スレッドプールに

ExecutorService threadpool = Executors.newFixedThreadPool(3); 

     public Future<APIReponse> submitTask(APIRequest request) throws InterruptedException, ExecutionException { 
      System.out.println("Submitting Task ..."); 
      Future<APIReponse> future = threadpool.submit(new Callable<APIReponse>() { 

       @Override 
       public APIReponse call() throws Exception { 
        api_execute(request,UUID); 

        return new APIReponse(); 
       } 

      }); 
      return future; 
+0

を使用して非同期タスク実行を作成し、私は前にExecuterServiceを使ったことがないが、面白そう。私はメソッドの内部で直接使用する必要がありますか、それは要求UUIDに基づいて応答を区別する必要がありますか? –

+0

これは呼び出し元のメソッドに将来を返します。 –

関連する問題