package com.snail.exam public final class FinalizerExam { public static void main(String[] args) { // シャットダウンフックの登録 Runtime.getRuntime().addShutdownHook( new Thread() { public void run() { System.out.println("ちりぬべき 時知りてこそ 世の中の 花も花なれ 人も人なれ"); } }); // 無限ループの実行 FinalizerExam thisObj = new FinalizerExam(); thisObj.heartBeat(); } /** * 無限ループを行うメソッド(waitを使うためにsynchronizedにしてある) */ public synchronized void heartBeat() { while (true) { System.out.println("生きてるよ!"); try { wait(3000L); } catch (InterruptedException ignoreEx) { ignoreEx=null; } } } }
C:\eclipse\workspace\SandBox>SET classpath=%classpath%;C:\eclipse\workspace\SandBox\bin C:\eclipse\workspace\SandBox>java com.snail.exam.FinalizerExam 生きてるよ! 生きてるよ! ちりぬべき 時知りてこそ 世の中の 花も花なれ 人も人なれ
Ctrl+C で VM を終了させると、シャットダウンフックに登録してある Thread#run() が実行される