每个线程的任务执行者分布

Executors distribution of task per threads

我对 java 个执行者还很陌生,所以这可能是一个简单的问题。

ExecutorService executorService = Executors.newFixedThreadPool(NumberOfThreads - 1);

        do_work();  
        for(int i = 1; i < NumberOfThreads; i++)
        {
            executorService.execute(new Runnable() 
            {                                   
                public void run()
                {
                    do_work();  
                }
            });             
        } 

我的问题是:

如果我用'N'个线程创建一个固定的线程池,如果我想执行'N'个任务,就像上面的代码。我是否可以保证每个线程只会执行一个任务 (do_work())?

没有。它是一个池,线程分配给任务并不能做出这样的保证。

例如假设您的 do_work() 方法立即完成。当您提交第二个 Runnable 时,池中的所有线程都将可用,并且其中任何一个都将成为您的工作的候选人。