[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[jfriends-ml 12540] java のプログラムを Ctrl+C で止める



岩室です。

飲み会の雑談で出たネタ。

javaのプログラムをCtrl+Cで止めたとき、安全に終了します。

元ネタはココ(↓)。
http://www.mailpia.jp/mpblog/tfukui/cat24/java/

public class Test {
  public static void main(String[] args) {
      final Thread main = Thread.currentThread();
      Runtime.getRuntime().addShutdownHook(new Thread() {
          public void run() {
              System.out.println("Starting shutdown...");
              System.out.flush();
              main.interrupt();
              try {
                  main.join();
              } catch (InterruptedException e) {
                  // no operation
              }
              System.out.println("Done.");
              System.out.flush();
          }
      });
      int i = 0;
      while (!Thread.interrupted()) {
          System.out.println(++i);
          System.out.flush();
      }
      System.out.println("Interrupted!!");
      System.out.flush();
  }
}

--
IWAMURO Motnori