第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何調(diào)整這3個線程的控制流?

如何調(diào)整這3個線程的控制流?

Helenr 2021-12-01 19:16:26
// Task 1 -- the main thread        SimilarityResponse w2vResponse = questionClassifier.compute(questionInfo);        // Task 2        String sku = questionInfo.getSku();        String question = questionInfo.getQuestion();        Callable<ResponseList> dssmTask = () -> this.dssmCompute(sku, question);        Future<ResponseList> dssmService = executorService.submit(dssmTask);        ResponseList dssmResponse;        try {            LOGGER.info("start dssm ... {} ", question);            dssmResponse = dssmService.get(Parameters.getParserTimeLimit(), TimeUnit.MILLISECONDS);            LOGGER.info("dssmResponse ... {} ", dssmResponse);        } catch (ExecutionException | InterruptedException e) {            LOGGER.warn("ExecutionException | InterruptedException");            e.printStackTrace();        } catch (TimeoutException te) {            dssmService.cancel(true);            LOGGER.warn("DSSM time out for {} {}", sku, question);        }        // Task 3        Callable<ResponseList> stsTask = () -> this.stsCompute(sku, question);        Future<ResponseList> stsService = executorService.submit(stsTask);        ResponseList stsResponse;        try {            LOGGER.info("start sts ... {} ", question);            stsResponse = stsService.get(Parameters.getParserTimeLimit(), TimeUnit.MILLISECONDS);            LOGGER.info("stsResponse ... {} ", stsResponse);        } catch (ExecutionException | InterruptedException e) {            LOGGER.warn("ExecutionException | InterruptedException");            e.printStackTrace();        } catch (TimeoutException te) {            stsService.cancel(true);            LOGGER.warn("STS time out for {} {}", sku, question);        }        // Last step == do something for above        SimilarityResponse ensemble = new SimilarityResponse();        return ensemble;在執(zhí)行最后一步之前,如何確保任務 1-3 已經(jīng)完成?當前代碼似乎是先完成Task 1,然后直接返回。
查看完整描述

1 回答

?
桃花長相依

TA貢獻1860條經(jīng)驗 獲得超8個贊

您應該使用 CountDownLatch。在您的主線程中創(chuàng)建它的實例并將此實例傳遞給您的任務(Callables)。然后當任務完成時調(diào)用latch.countDown()。在代碼的最后一步調(diào)用 latch.await() 以等待每個任務完成。它看起來像這樣(如果你的 callables 是作為 lambdas 創(chuàng)建的):


final CountDownLatch latch = new CountDownLatch(3);


for(int x = 0; x < 3; x++) {

    service.submit( () -> {

        // do something

        latch.countDown();

    });

}


// in the end wait for tasks to finish

latch.await();


查看完整回答
反對 回復 2021-12-01
  • 1 回答
  • 0 關注
  • 213 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號