执行程序每个线程的任务分配

时间:2015-02-05 15:24:47

标签: java multithreading executorservice

我对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())?

1 个答案:

答案 0 :(得分:3)

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

e.g。想象您的do_work()方法立即完成。当您提交第二个Runnable时,池中的所有线程都将可用,并且其中任何一个都将成为您工作的候选者。