首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >newCachedThreadPool如何重用线程?

newCachedThreadPool如何重用线程?
EN

Stack Overflow用户
提问于 2012-08-22 19:23:22
回答 1查看 326关注 0票数 5

javadoc说明Executors.newCachedThreadPool返回的服务重用了线程。这怎麽可能?一个线程只能通过调用start启动一次。那么他们是如何实现的呢?此服务的线程正在无限循环中运行,它们的Runnable-s是否按需替换?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-08-22 19:34:38

一个Runnable可以调用另一个Runnable。

每个线程只运行一个主Runnable,但是这个Runnable从一个共享的BlockingQueue中获取Runnable并调用它们,直到它关闭。

简化了就行了。

代码语言:javascript
复制
final BlockingQueue<Runnable> queue = ...

Runnable runs = new Runnable() { public void run() {
    while(running)
        queue.take().run();
}};

你可以通过阅读代码来了解它是如何做到的。

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

https://stackoverflow.com/questions/12071999

复制
相关文章

相似问题

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