問題タブ [shutdown-hook]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
1463 参照

php - PHPでは、max_execution_timeは、register_shutdown_function()呼び出しを介して実行されるシャットダウン関数に影響しますか?

使用してシャットダウン機能を登録しregister_shutdown_function()ましたが、完了するまでに時間がかかります。PHPmax_execution_timeにより、PHPはこの関数を終了しますか、それとも完了するかエラーになるまで実行されますか?

0 投票する
3 に答える
4293 参照

java - 実行の終了時に自動的にシャットダウンするスレッドプールを実装するにはどうすればよいですか?

私は、理論的には別の環境で使用できるJavaクライアントを作成しています。Javamain()、サーブレットコンテナー、または依存性注入を介して。

クライアントは、内部接続スレッドプールを実装します。

このアプローチの問題は、内部スレッドプールが実装されていることに気付いていないクライアントのユーザーが、シャットダウン時にアプリケーションが「ハング」するのを目にすることです。私のユーザーは、shutdown()メッセージをライブラリに送信することを知っている必要があります。

一方では、接続用のスレッドプールを開始できるようにする他の代替アプローチを採用できるかどうか疑問に思っています。一方、JVMがダウンしていることを示すイベント、おそらくJVMイベントをキャッチします。これにより、shutdown()実装を呼び出すことができます。

0 投票する
2 に答える
1685 参照

java - JBoss 5.1 内の ShutdownHook の java.util.Logger が常に server.log に出力されないのはなぜですか?

JBoss 5.1 内に EJB3-Timer があります。 編集: ShutdownHook は、doTimeOut() が正常に終了できるフラグを設定する必要があります (そうしないと、ジョブが完了し、このタイマーが終了するまでシャットダウンが停止されます)。

この 2 つの投稿を見つけましたが、これらは 2005 年のもので、バグは CLOSED とマークされています。

http://www.pankaj-k.net/archives/2005/08/jboss_shutdown.html

http://jira.jboss.com/jira/browse/JBAS-2087

anonymousLogger によってスローされる例外は NullPointer です。

何か案は?

0 投票する
2 に答える
1166 参照

java - System.exit(0) が呼び出された後もアプリケーションが実行され続ける - Java

以前の質問 ( Detecting When A Java Application Closes ) に続いて、シャットダウンする前にアプリケーションのリソースをクリーンアップしようとしています。クリーンアップ操作を完全に実行する次のコードを実装しました。

System.exit(0); 呼び出しが理解されて処理されると、アプリケーションは引き続き実行されますが、目に見える GUI はありません。System.exit(0) 呼び出しをスレッドのすぐ外側に配置することを考えましたが、それは範囲外であり、実行中の他のスレッドやストリームはありません。

すべてが確実に終了するように ShutDown イベントにフックするときに実行する必要がある追加の手順はありますか?

お時間をいただきありがとうございます。

0 投票する
3 に答える
546 参照

c++ - 制御されたアプリケーションのシャットダウン戦略

私たちの(WindowsネイティブC ++)アプリは、スレッド化されたオブジェクトとマネージャーで構成されています。それはかなりよく書かれており、マネージャーオブジェクトがミニオンのライフサイクルを制御しているのを見るデザインです。さまざまなオブジェクトがイベントをディスパッチおよび受信します。一部のイベントはWindowsからのものであり、一部は自家製です。

一般に、スレッドの相互運用性を十分に認識している必要があるため、Win32のクリティカルセクションやセマフォなどを使用した手動の同期手法を使用します。ただし、イベントハンドラーの再入可能性などが原因で、シャットダウン中にスレッドのデッドロックが発生することがあります。

中央コントローラーからシャットダウンイベントに登録し、それに応じて実行動作を変更するすべてのオブジェクトのように、これを開発しやすくするために実装できる適切なアプリシャットダウン戦略があるかどうか疑問に思います。これはあまりにも素朴ですか、それとももろいですか?

Microsoftの並列パターンライブラリなどを使用するようにアプリ全体を書き直すことを規定していない戦略を希望します。;-)

ありがとう。

編集:

多くのスレッドとイベントが常に発生している複雑なアプリでオブジェクトのライフサイクルを制御する方法を求めていると思います。Giovanniの提案は明白なものですが(私たち自身の手作業で)、アクティブオブジェクトを正しい順序でクリーンにシャットダウンするには、さまざまな既製の戦略またはフレームワークが必要であると私は確信しています。たとえば、C ++アプリをIoCパラダイムに基づいて作成する場合は、独自のコンテナーを開発する代わりに、PocoCapsuleを使用できます。アプリでオブジェクトのライフサイクルを制御するのに似たものはありますか?

0 投票する
1 に答える
434 参照

java - 少し長いタスクにシャットダウンフックを使用できますか

Java アプリケーションのシャットダウン時に呼び出されるシャットダウン フック機能に遭遇しました。

  • SIGTERM シグナルを使用して、Linux Box で Java プロセスをシャットダウンしています。

  • そして、シャットダウン時に、いくつかのディスク I/O (いくつかのオブジェクトを永続化) を実行し、開いているファイル バッファーを閉じます (最大 1 分かかる場合があります)。

  • シャットダウン フックがこのユース ケースの安全で信頼できるメカニズムであるかどうかアドバイスできますか

  • より良い代替案があれば、提案してください。

0 投票する
3 に答える
7067 参照

java - JVMがシャットダウンしていることを検出する

addShutdownHook()を使用してCtrl + Cを処理するSwingアプリケーションがあり、通常の状況でJLabelテキストを変更する関数を呼び出すシャットダウンタスクの1つまで正常に動作し、その時点でハングします。

問題は、Swing EDTが終了したか、何かを待っていることだと思います。

EDTが終了したか「完了」したかを判断する方法(Swingメソッドの呼び出しを回避できるようにするため)、またはCtrl-Cでの通常のウィンドウを閉じる動作を防ぐ方法はありますか?


明確にするために:

というクラスのメソッドがありstop()ます。通常の状況では、これは(その補足とともにstart())呼び出される可能性があり、発生した視覚的なフィードバックのために、JLabelが更新される原因となる一連の事柄をトリガーしますstop()

シャットダウンフックが実行されたら、stop()いくつかのリソースを正常にシャットダウンするために呼び出す必要があります。

私が求めているのは、Swing EDTが存在しないことをどのように検出できるかということです。そのためstop()、Swingの欠如を検出し、Swing関数の呼び出しを回避するように書き直すことができます。

0 投票する
3 に答える
4449 参照

java - Javaプロセスの正常なシャットダウン/終了を行う方法は?

いくつかのJavaアプリを実行していますが、Windowsのbatスクリプトからすべてのアプリを正常にシャットダウン/閉じる必要があります。だから私の質問は:
Windowsのbatスクリプトでシャットダウンフックを呼び出し、Javaプログラムを正常にシャットダウンする方法です。

任意の提案をいただければ幸いです。前もって感謝します。

0 投票する
1 に答える
8748 参照

java - netbeans はどのように実行を停止しますか?

私は Netbeans 7 を使用して Linux で Java を使用してプログラミングしていますが、私のプログラムは (時々) 終了できませんでした (おそらくこの eon ではありません)。シャットダウンを処理するスレッドを作成します。

しかし、netbeans (F6) でコードを起動し、「STOP」ボタンで停止すると、スレッドは作成されません。しかし、端末からプログラムを実行して CTRL-c を送信すると、スレッドが作成されます。
問題は、プログラムを終了するために netbeans が起動するシグナルの種類はどれかということです。
または(より良い):プログラムを強制的に停止した場合にスレッドが作成されるように、netbeansの停止をどのように処理できますか?
または、ストップの動作を変更する方法はありますか?

ありがとうございました!