5
javadoc說Executors.newCachedThreadPool
返回的服務會重用線程。這怎麼可能? 線程只能通過調用start
啓動一次。那麼他們如何實現它?此服務的線程正在無限循環中運行,並且它們的Runnable
-s按需更換?newCachedThreadPool如何重用線程?
javadoc說Executors.newCachedThreadPool
返回的服務會重用線程。這怎麼可能? 線程只能通過調用start
啓動一次。那麼他們如何實現它?此服務的線程正在無限循環中運行,並且它們的Runnable
-s按需更換?newCachedThreadPool如何重用線程?
一個Runnable可以調用另一個Runnable。
每個線程只運行一個主Runnable,但該Runnable從共享的BlockingQueue中獲取Runnable並調用這些直到它關閉。
簡化它。
final BlockingQueue<Runnable> queue = ...
Runnable runs = new Runnable() { public void run() {
while(running)
queue.take().run();
}};
你可以閱讀代碼,看看它是如何做到的。
我本來可以猜到......簽名還暗示了這種功能。 – zeller