Java:线程池如何将线程映射到可运行对象

标签 java concurrency

我试图全神贯注于 Java 并发性,但很难理解线程池、线程和它们正在执行的可运行“任务”之间的关系。

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

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

最佳答案

通常,线程池是通过一个生产者-消费者队列实现的,所有池线程都在该队列上等待任务。 Executor 不必分配任务,它所要做的就是将任务插入队列。一些线程,一个“与任务无关的工作无人机”,将弹出任务,执行其“run()”方法,并在完成后循环以再次在队列中等待更多工作。

关于Java:线程池如何将线程映射到可运行对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10377378/

相关文章:

java - 如何在 Android 2.1 中实现均衡器?

java - 按属性隔离列表

java - JButton 无法在 actionListener 内解析

multithreading - 什么是竞争条件?

python - 将多个参数传递给 concurrent.futures.Executor.map?

java - 停止java.util.concurrent.Executor任务的方法

mysql - InnoDB 怎么可能在单行上死锁?

java - 如何在 Java 中使用迭代器/枚举接口(interface)

java - 使用 eclipse 使用 wikipedia api 所需的 token (或其他东西)

java - 同步线程安全对象列表中的多个读取和写入