每个线程的任务执行者分布
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 时,池中的所有线程都将可用,并且其中任何一个都将成为您的工作的候选人。
我对 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 时,池中的所有线程都将可用,并且其中任何一个都将成为您的工作的候选人。