gpt4 book ai didi

java - newCachedThreadPool 是如何复用线程的?

转载 作者:搜寻专家 更新时间:2023-10-31 20:14:23 25 4
gpt4 key购买 nike

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

最佳答案

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

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

简化了它。

final BlockingQueue<Runnable> queue = ...

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

您可以阅读代码以了解它是如何真正做到的。

关于java - newCachedThreadPool 是如何复用线程的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12071999/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com