javadocによると、によって返されるサービスはExecutors.newCachedThreadPool
スレッドを再利用します。これはどのように可能ですか?スレッドは、を呼び出すことによって1回だけ開始できますstart
。では、どのように実装するのでしょうか。このサービスのスレッドは無限ループで実行されており、それらのRunnable
-sはオンデマンドで置き換えられますか?
質問する
329 次
1 に答える
4
Runnableは別のRunnableを呼び出すことができます。
各スレッドは1つのメインRunnableのみを実行しますが、そのRunnableは共有BlockingQueueからRunnableを取得し、シャットダウンされるまでこれらを呼び出します。
簡略化されています。
final BlockingQueue<Runnable> queue = ...
Runnable runs = new Runnable() { public void run() {
while(running)
queue.take().run();
}};
コードを読んで、実際にどのように機能するかを確認できます。
于 2012-08-22T11:34:38.353 に答える