0

I was just reading that we can use shutdown hooks as an example of a time when it would be ideal to provide functions to clean up before application exit.

私が疑問に思っていたのは、たとえば、Web サービスのように 24 時間年中無休で実行するアプリケーションがある場合、Executor サービスなどを終了してクリーンアップするのに理想的な時期はいつかということです。アプリケーションがダウンすることが想定されていない場合、実際には、便利なクリーンアップ期間や、実際にクリーンにシャットダウンする機能がありませんか?

ありがとう

4

1 に答える 1

1

質問は広すぎますが、それが正しいことを理解していれば、Oracleのドキュメントで説明されています:

プログラムで参照されなくなり、スレッドが残っていないプールは、自動的にシャットダウンされます。ユーザーが shutdown() を呼び出すのを忘れた場合でも、参照されていないプールが再利用されるようにしたい場合は、適切なキープアライブ時間を設定し、ゼロコアスレッドの下限を使用するか、および/またはallowCoreThreadTimeOut(boolean) を設定します。

たとえば、によって作成される ExecutorServiceExecutors.newSingleThreadExecutor()は のインスタンスですFinalizableDelegatedExecutorService。これで、ラップされた ExecutorService オブジェクトのメソッドを呼び出すメソッドがExecutorService クラスに追加されました。finalize()shutdown()

于 2014-08-25T17:12:11.513 に答える