私はシンプルなコンソールアプリケーションで作業していますが、次の問題があります。ユーザがアプリケーションを閉じるときに操作を傍受して実行する必要があります(たとえば、シェルでCTRL + Cをクリック)。ユーザーがJavaコンソールアプリケーションを終了したときに、正しく傍受して処理する方法は?
addShutdownHook()メソッドを実行時に使用できます(ただし、このアサーションについては絶対にわかりません)が、私にとっては機能しません。
私はこのような何か行っている:私は、アプリケーションが起動し、ユーザーがCTRL + Cすることにより、アプリケーションを終了すると、それは実行に入力する必要があることが予想このようにすること
public class MainApp {
public static void main(String[] args) {
Runtime.getRuntime().addShutdownHook(new Thread()
{
@Override
public void run()
{
System.out.println("STOPPED !!!");
}
});
...................................................................
...................................................................
MY APPLICATION BEHAVIOR
...................................................................
...................................................................
}
}
を()メソッドは新しいスレッド()に定義された
何が起こるかというと、私はCTRL + Cを押して自分のアプリケーションを終了した場合、アプリケーションがBを終了することですut run()メソッドが実行されないため、アプリケーションの終了が処理されません
何が問題なのですか?私は何が欠けていますか?ユーザーがコンソールアプリケーションを終了したときに、どのように正しく傍受することができますか?
@RealSkeptic私は間違った主張をした、私は私の元の投稿を編集しました。基本的には、アプリケーションが正常に起動しますが、CTRL + Cで終了すると、アプリケーション終了は処理されず、run()メソッドは実行されません。 –
「アプリケーション動作」の部分について詳しく教えてください。それは何をするためのものか?おそらく、それはたくさんのものを印刷するので、シャットダウンフックからプリントが見えないでしょうか? – RealSkeptic