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