我对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())?
答案 0 :(得分:3)
没有。它是一个池,为任务分配线程并不能做出这样的保证。
e.g。想象您的do_work()
方法立即完成。当您提交第二个Runnable时,池中的所有线程都将可用,并且其中任何一个都将成为您工作的候选者。