Using finalize() to detect an object that hasn't been properly cleaned up
// : c04:TerminationCondition.java // Using finalize() to detect an object that hasn't been properly cleaned up. // From 'Thinking in Java, 3rd ed.' (c) Bruce Eckel 2002 // www.BruceEckel.com. See copyright notice in CopyRight.txt. class Book { boolean checkedOut = false; Book(boolean checkOut) { checkedOut = checkOut; } void checkIn() { checkedOut = false; } public void finalize() { if (checkedOut) System.out.println("Error: checked out"); } } public class TerminationCondition { public static void main(String[] args) { Book novel = new Book(true); // Proper cleanup: novel.checkIn(); // Drop the reference, forget to clean up: new Book(true); // Force garbage collection & finalization: System.gc(); } } ///:~
1. | Ensuring proper cleanup | ||
2. | Demonstrate how finalize() methods and shutdownHooks interact |