zel*_*ler 5 java multithreading executorservice
javadoc说通过Executors.newCachedThreadPool重用线程返回的服务.这怎么可能?一个线程只能通过调用启动一次start.那么他们如何实现呢?这个服务的线程是在一个无限循环中运行,它们的Runnable-s是按需替换的?
一个 Runnable 可以调用另一个 Runnable。
每个线程仅运行一个主 Runnable,但该 Runnable 从共享的 BlockingQueue 中获取 Runnable 并调用这些 Runnable,直到其关闭。
简化了确实如此。
final BlockingQueue<Runnable> queue = ...
Runnable runs = new Runnable() { public void run() {
while(running)
queue.take().run();
}};
Run Code Online (Sandbox Code Playgroud)
您可以阅读代码以了解其实际操作方式。
| 归档时间: |
|
| 查看次数: |
312 次 |
| 最近记录: |