javadoc 说由Executors.newCachedThreadPool
重用线程返回的服务。这怎么可能?一个线程只能通过调用启动一次start
。那么他们是如何实现的呢?该服务的线程在无限循环中运行并且它们的Runnable
-s 按需替换?
问问题
329 次
1 回答
4
一个 Runnable 可以调用另一个 Runnable。
每个线程只运行一个主 Runnable,但该 Runnable 从共享的 BlockingQueue 中获取 Runnables 并调用它们,直到它被关闭。
简化它。
final BlockingQueue<Runnable> queue = ...
Runnable runs = new Runnable() { public void run() {
while(running)
queue.take().run();
}};
您可以阅读代码以了解它是如何实现的。
于 2012-08-22T11:34:38.353 回答