簡體   English   中英

ExecutorService和For循環JAVA

[英]ExecutorService and For loop JAVA

queuedJobs = dataController.getQueuedJobs();

threadExecutor = Executors.newFixedThreadPool(queuedJobs.size());

System.out.println("THE NUMEBR OF JOBS IS "+queuedJobs.size());

for (int i=0; i<queuedJobs.size(); i++){
    System.out.println("THREAD "+i+" CREATED");
    threadExecutor.execute( queuedJobs.get(i) );
}

我創建了一個queuedJobs.size(8個)線程池,但是for循環每次執行時僅執行7或6個更改的作業? 誰能向我解釋一下,並幫助我每次執行正確的金額?

我嘗試創建一個具有10個線程的簡單程序,但無法重現此問題,我的代碼段是:

package com.thread;

import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

public class Executor {

    public static void main(String[] args) {
        List<Thread> queuedJobs = new ArrayList<Thread>();
        queuedJobs.add(new Thread(new MyThreadClass()));
        queuedJobs.add(new Thread(new MyThreadClass()));
        queuedJobs.add(new Thread(new MyThreadClass()));
        queuedJobs.add(new Thread(new MyThreadClass()));
        queuedJobs.add(new Thread(new MyThreadClass()));
        queuedJobs.add(new Thread(new MyThreadClass()));
        queuedJobs.add(new Thread(new MyThreadClass()));
        queuedJobs.add(new Thread(new MyThreadClass()));
        queuedJobs.add(new Thread(new MyThreadClass()));
        queuedJobs.add(new Thread(new MyThreadClass()));

        ExecutorService threadExecutor = Executors.newFixedThreadPool(queuedJobs.size());

        System.out.println("THE NUMEBR OF JOBS IS "+queuedJobs.size());

        for (int i=0; i<queuedJobs.size(); i++){
            System.out.println("THREAD "+i+" CREATED");
            threadExecutor.execute( queuedJobs.get(i) );
        }
    }
}

class MyThreadClass implements Runnable {

    @Override
    public void run() {
        System.out.println("I am running");
    }
}

輸出為:

THE NUMEBR OF JOBS IS 10
THREAD 0 CREATED
THREAD 1 CREATED
I am running
THREAD 2 CREATED
I am running
THREAD 3 CREATED
THREAD 4 CREATED
I am running
THREAD 5 CREATED
I am running
THREAD 6 CREATED
I am running
I am running
THREAD 7 CREATED
THREAD 8 CREATED
I am running
I am running
THREAD 9 CREATED
I am running
I am running

請張貼完整的代碼段以進行進一步調查。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM