Java:线程池如何将线程映射到runnables

IAm*_*aja 2 java concurrency

试图了解Java并发性,并且很难理解线程池,线程和正在执行的可运行"任务"之间的关系.

如果我创建一个带有10个线程的线程池,那么我是否必须将相同的任务传递给池中的每个线程,或者池化线程是否只是与任务无关的"工作者无人机"可用于执行任何任务?

无论哪种方式,Executor/ExecutorService如何将正确的任务分配给正确的线程?

Mar*_*mes 7

通常,线程池使用一个生产者 - 消费者队列实现,所有池线程都在等待任务.Executor不必分配任务,它所要做的就是将它们推送到队列中.某个线程,一个"与任务无关的工作人员无人机",将弹出任务,执行其'run()'方法,并在完成后循环再次等待队列以进行更多工作.