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



我对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时,池中的所有线程都将可用,其中任何一个线程都将成为你工作的候选人。

最新更新