国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計 > 正文

多線程異步調(diào)用等待響應(yīng)結(jié)果后繼續(xù)處理

2019-11-11 00:55:04
字體:
供稿:網(wǎng)友
1、在有響應(yīng)的時候,使用ResponseFuture對象,并在onResponse方法中,將響應(yīng)設(shè)置到Futrue中。

import com.google.common.util.concurrent.AbstractFuture;

public class ResponseFuture<JsonPRotocol>extends AbstractFuture<JsonProtocol>

{

    private final Executorexecutor;

    public ResponseFuture()

    {

        if (ThreadLocalUtil.get("isServer") ==null)

        {

            //TODO 這里是錯誤的,把這行代碼移到一個單例的全局共享中取,避免每次new。如果是服務(wù)端,那么所有的服務(wù)端都共享一個線程池

            executor = Executors.newFixedThreadPool(Runtime.getRuntime().availableProcessors(),

                    new RpcThreadFacotry("CallBack"));

        }

        else

        {

            //單線程執(zhí)行器

            executor = MoreExecutors.directExecutor();

        }

    }

    /**

     * 當(dāng)響應(yīng)回來的時候,結(jié)果被設(shè)置到future中,因此從future中可以獲得一個異步的響應(yīng)結(jié)果

     * @param responseProtocol

     */

    public void onResponse(JsonProtocolresponseProtocol)

    {

        //向future中設(shè)置值

        super.set(responseProtocol);

    }

    /**

     * 當(dāng)響應(yīng)有結(jié)果時候可以直接runnable的方法

     * @param runnable

     */

    public void addCallBack(Runnablerunnable)

    {

        super.addListener(runnable,executor);

    }

}

2、等待線程獲得響應(yīng)結(jié)果(使用future.get阻塞等待異步線程的響應(yīng))

        ResponseFuture<JsonProtocol>reponseFuture = client.futureInvoke(JsonProtocolReqeust);

        JsonProtocol JsonProtocolResponse =null;

        try

        {

            JsonProtocolResponse =reponseFuture.get(JsonProtocolReqeust.getRpcMetadata().getTimeOut(),

                    TimeUnit.MILLISECONDS);

        }

        catch (ExecutionException e){}

        catch (TimeoutException e)

        {

            throw new RuntimeException("調(diào)用遠(yuǎn)程服務(wù)響應(yīng)超時",e);

        }


上一篇:安卓自定義廣播

下一篇:go crontab

發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 新闻| 三明市| 灯塔市| 南充市| 岗巴县| 邵东县| 乌什县| 廉江市| 育儿| 久治县| 沧州市| 莎车县| 昌江| 丰宁| 南木林县| 墨竹工卡县| 灌阳县| 万源市| 东宁县| 临洮县| 邻水| 东乌珠穆沁旗| 抚顺市| 得荣县| 连平县| 尼勒克县| 汉川市| 嘉义县| 嘉兴市| 原阳县| 临潭县| 仪陇县| 安徽省| 成都市| 新竹市| 深水埗区| 普兰县| 垣曲县| 景德镇市| 淮安市| 桂阳县|