5

エグゼキュータは通常、(短期間の)タスクに関して使用されますが、アプリケーションの存続期間を通じて実行する必要があるタスクなど、実行時間の長いタスクを処理するための最良の方法は何ですか?

別のスレッドで実行されるタスクがX秒ごとにディレクトリの変更をポーリングするアプリケーションがあるとします。アプリケーションが終了しない限り、このタスクはポーリングを終了しないでください。これを開始して管理するにはどうすればよいですか?

new Thread(theLongRunningTask).start()そのような悪い選択肢でしょうか?

4

1 に答える 1

5

これは、Executorsフレームワーク、特にscheduleAtFixedRateのユースケースでもあります。アプリが完成したときに、そのスレッドがぶら下がっていることに注意してください。ThreadFactoryデーモンスレッドを作成するカスタムを使用できます。または、もっと簡単なものが必要な場合は、TimerAPIを使用します。Timer「デーモンスレッドを使用する」を意味するブール引数を使用してを作成できます。アプリケーションの終了時にエグゼキュータサービスを明示的にシャットダウンすることもできます。

于 2012-05-14T11:44:26.953 に答える