私は過去数時間でそれについてかなり読んでいた、と私は単に何らかの理由(見ることができない正当なコールする理由)shutdown()
上をExecutorService
我々が使用されていない別のエグゼキュータのサービスのでかいアプリケーションストア、何十と数十を持っていない限り、長い間。
(私が収集したものから)シャットダウンが行う唯一のことは、それが行われた後、通常のスレッドが行うことを行うことです。通常のスレッドがRunnable(またはCallable)のrunメソッドを終了すると、ガベージコレクションに渡されて収集されます。エグゼキュータサービスを使用すると、スレッドは単に保留になり、ガベージコレクション用にチェックされません。そのためにはシャットダウンが必要です。
質問に戻りましょう。ExecutorService
非常に頻繁に、またはいくつかのタスクを送信した直後にシャットダウンを呼び出す理由はありますか?誰かがそれをしているケースを残し、その直後にawaitTermination()
これが検証されたときに電話をかけたいと思います。それを行っExecutorService
たら、同じことをするために、新しいものをもう一度作り直す必要があります。ExecutorService
スレッドを再利用するための全体的なアイデアではありませんか?では、なぜExecutorService
そんなに早く破壊するのですか?
単純に作成するExecutorService
(または必要な数に応じて結合する)のは合理的な方法ではありません。アプリケーションの実行中に、タスクが発生したらタスクを渡し、アプリケーションの終了またはその他の重要な段階でそれらのエグゼキュータをシャットダウンします。 ?
ExecutorServicesを使用して多くの非同期コードを作成する経験豊富なコーダーからの回答をお願いします。
2番目の質問、Androidプラットフォームを扱う少し小さい。毎回エグゼキュータをシャットダウンするのは最善ではないと言う人がいて、Androidでプログラムしている場合、さまざまなイベントを処理するときに、これらのシャットダウンをどのように処理するか(具体的には、実行するとき)を教えてください。アプリケーションのライフサイクル。
CommonsWareのコメントのため、私は投稿を中立にしました。私はそれについて議論することに本当に興味がなく、それがそこにつながっているようです。経験豊富な開発者が経験を共有してくれるのであれば、ここで私がここで尋ねたことについて学ぶことにのみ興味があります。ありがとう。