首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Java:线程池如何将线程映射到runnables

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

Stack Overflow用户
提问于 2012-04-30 09:00:30
回答 2查看 612关注 0票数 2

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

如果我创建一个线程池,假设有10个线程,那么我是否必须将相同的任务传递给池中的每个线程,或者池中的线程实际上只是任务不可知的“工作者无人机”,可以执行任何任务吗?

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

EN

回答 2

Stack Overflow用户

发布于 2012-04-30 09:07:52

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

票数 7
EN

Stack Overflow用户

发布于 2012-04-30 12:58:51

如果我创建一个线程池,假设有10个线程,那么我是否必须将相同的任务传递给池中的每个线程,或者池中的线程实际上只是任务不可知的“工作者无人机”,可以执行任何任务吗?

或多或少是后者。任何给定的任务都会分配给下一个可用的线程。

无论哪种方式,执行器/执行器服务如何将正确的任务分配给正确的线程?

没有所谓的“正确”的线索。任务(即Runnable)需要设计成与运行它的线程无关。这通常不是问题..。假设您的应用程序正确地同步了对可能由多个线程使用的数据的访问/更新。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10377378

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档