Java에서 종료 후크는 애플리케이션이 종료 시 정리 작업을 수행하는 방법을 제공합니다. 이는 예상치 못한 중단이 발생할 경우 프로그램이 정상적으로 종료되도록 하는 데 유용할 수 있습니다.
파일에 숫자를 일괄적으로 쓰는 다음 애플리케이션을 고려해 보세요.
<code class="java">import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.PrintWriter; public class GracefulShutdownTest1 { private final File f; private final int N; public GracefulShutdownTest1(File f, int N) { this.f = f; this.N = N; } public void run() { try (PrintWriter pw = new PrintWriter(new FileOutputStream(f))) { for (int i = 0; i < N; ++i) { writeBatch(pw, i); } } catch (FileNotFoundException e) { e.printStackTrace(); } } private void writeBatch(PrintWriter pw, int i) { for (int j = 0; j < 100; ++j) { pw.write(Integer.toString(i * 100 + j)); if ((j + 1) % 10 == 0) { pw.write('\n'); } else { pw.write(' '); } } } public static void main(String[] args) { if (args.length < 2) { System.out.println("args = [file] [N] " + "where file = output filename, N=batch count"); } else { new GracefulShutdownTest1(new File(args[0]), Integer.parseInt(args[1])).run(); } } }</code>
이 애플리케이션에 종료 후크를 통합하려면 다음 단계를 따르세요.
<code class="java">private static volatile boolean keepRunning = true; // ... public void run() { try (PrintWriter pw = new PrintWriter(new FileOutputStream(f))) { for (int i = 0; i < N && keepRunning; ++i) { writeBatch(pw, i); } } catch (FileNotFoundException e) { e.printStackTrace(); } } // ... public static void main(String[] args) { final Thread mainThread = Thread.currentThread(); Runtime.getRuntime().addShutdownHook(new Thread() { public void run() { keepRunning = false; mainThread.join(); } }); new GracefulShutdownTest1(new File(args[0]), Integer.parseInt(args[1])).run(); }</code>
종료 후크를 구현하면 보다 탄력적인 종료 후크를 제공할 수 있습니다. 종료하기 전에 필요한 정리 작업을 수행하는 애플리케이션입니다.
위 내용은 특히 파일 작업을 처리할 때 Java의 종료 후크를 사용하여 애플리케이션을 정상적으로 종료할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!