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

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

Threadpoolexecutor - 使用作業(yè)列表提交作業(yè)?

Threadpoolexecutor - 使用作業(yè)列表提交作業(yè)?

狐的傳說 2021-12-10 15:33:33
下面的代碼是一個Customer和jobManager??蛻粲行彰⒌刂泛蛶粲囝~。工作是從一個客戶到另一個客戶的資金轉移。這是一個 Threadpoolexecutor 培訓計劃。以下版本有效,我一一提交作業(yè)。客戶.javapublic class customer {    private String name;    private String adress;    private Double accountBalance;    public customer(String name, String adress, Double accountBalance)    {        this.name = name;        this.adress = adress;        this.accountBalance = accountBalance;    }    public String getName() { return name; }    public String getAdress()    {        return adress;    }    public Double getAccountBalance(){return accountBalance;}    public void setAccountBalance(double accountBalance){this.accountBalance=accountBalance;}    @Override    public String toString(){        return "[" + name+"; " +adress+"; "+accountBalance+"]";    }}客戶組織者.javaimport java.util.ArrayList;import java.util.List;public class customerOrganizer {    private static final customerOrganizer myJobOrganizer = new customerOrganizer();    public static customerOrganizer getJobOrganizer(){        return myJobOrganizer;    }    private List<customer> customerList = new ArrayList<customer>();    public void add_customer(customer kunde)    {        this.customerList.add(kunde);    }    public Iterable<customer> all_customers()    {        return this.customerList;    }    public static customerOrganizer getInstance()    {        return myJobOrganizer;    }}作業(yè).javapublic class job implements Runnable {    private customer kunde1;    private customer kunde2;    private Double transfer;    public job(customer kunde1, customer kunde2, Double transfer) {        this.kunde1 = kunde1;        this.kunde2 = kunde2;        this.transfer = transfer;    }    @Override    public String toString(){        return "[" + kunde1+"; " +kunde2+"; "+transfer+"]";    }
查看完整描述

2 回答

?
呼喚遠方

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

ExecutorService處理如何在工人之間分配任務。你所要做的就是一個一個地傳遞作業(yè)。


for (job jobObj : myJobOrganizer.all_jobs()) 

    executor.submit(jobObj);

請注意,sumbitreturn aFuture<?>用于跟蹤您的任務是否已完成,或者是否出錯(還有任務結果,但 runnable 沒有結果)。如果您關心這些東西,您可能希望將它們收集在某種容器中,例如List.


如果您將 更改job為Callable<Void>,則提交會容易得多。Callable是 Runnable 的某種擴展,允許任務在完成時產(chǎn)生結果。由于您的傳輸沒有結果,因此將其java.lang.Void用作泛型參數(shù)的填充類型就可以了。


現(xiàn)在,只要做executor.invokeAll(myJobOrganizer.all_jobs())就足夠了。這將節(jié)省一些上下文切換,加快速度。(實際上很重要,因為你的任務都很小)


順便說一句,您應該知道并發(fā)訪問需要適當?shù)耐剑鷽]有。如果不同的工作涉及同一個帳戶,您的帳戶最終可能會處于錯誤狀態(tài)。我們也通常用大駝峰命名類,用小駝峰命名方法名。


查看完整回答
反對 回復 2021-12-10
?
紅顏莎娜

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

Stream如果你不想使用循環(huán),你可以使用它來做到這一點。如果您使用的是大于或等于 8 的 Java 版本,這里是一個示例


    myJobList

            .stream()

            .forEach(e -> executor.execute(() -> {

        //submit the jobs

    }));

或者


    myJobOrganizer.all_jobs()

            .stream()

            .forEach(e -> executor.submit(e));

executor.invokeAll(myJobList)如果您真的不想要循環(huán),您可以使用提交您的列表。


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

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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