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

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

根據(jù)java中的條件動(dòng)態(tài)添加執(zhí)行器

根據(jù)java中的條件動(dòng)態(tài)添加執(zhí)行器

繁星淼淼 2022-06-04 17:45:47
如果StrTemp.equals(true),我想要如下代碼(我這里有 2 個(gè)線程):ExecutorService executor = Executors.newFixedThreadPool(2);Future<String> f1 = executor.submit(new Callable<String >() {    public String  call() throws Exception {        return dao.getS4PricingResponse(pricingRequestTemp);    }});Future<String> f2 = executor.submit(new Callable<String>() {    public String call() throws Exception {        return dao.getS4ProductResponse(productRequestTemp);    }});如果不是真的,我想要?jiǎng)?chuàng)建三個(gè)線程。我會(huì)再添加一個(gè)f3=executor.submit。我怎樣才能動(dòng)態(tài)地決定這一點(diǎn)并使其更有效率?
查看完整描述

1 回答

?
幕布斯6054654

TA貢獻(xiàn)1876條經(jīng)驗(yàn) 獲得超7個(gè)贊

你把兩個(gè)不屬于一起的東西混在一起了。


執(zhí)行器服務(wù)及其任務(wù):該服務(wù)不知道也不關(guān)心有多少線程來(lái)運(yùn)行任務(wù)。換句話說(shuō):只需將您的工作項(xiàng)提交到其中。

但是您必須預(yù)先“修復(fù)”線程數(shù),簡(jiǎn)單的解決方案看起來(lái)

像這樣:


int numThreads = (whateverStrTemp.equals(somethingElse)) ? 2 : 3;

ExecutorService executor = Executors.newFixedThreadPool(numThreads);

// now submit all the tasks you want to submit ...

關(guān)于評(píng)論:那是不容易的。方法調(diào)用在兩個(gè)方面有所不同:被調(diào)用的方法和被傳遞的參數(shù)!您可以將不同調(diào)用的 lambda 放入一個(gè)映射中,但您可能需要另一個(gè)映射來(lái)保存一個(gè) lambda,該 lambda 獲取要傳遞給第一個(gè) lambda 的參數(shù)。從這個(gè)角度來(lái)看,我看不到僅重構(gòu)此代碼的合理方法。


我會(huì)退后一步,看看你試圖解決的潛在問題,并尋找不同的設(shè)計(jì)方法,以獲得更好的解決方案。


除此之外,您可以將所有代碼放入一個(gè)循環(huán)中,并將期貨添加到 aList<Future<String>>而不是創(chuàng)建變量 f1、f2、...(提示:每當(dāng)您開始使用像 foo1、foo2、...這樣的名稱時(shí),您應(yīng)該停止立即使用數(shù)組或列表)。


查看完整回答
反對(duì) 回復(fù) 2022-06-04
  • 1 回答
  • 0 關(guān)注
  • 116 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)