Before
an object is garbage collected, the run time system calls its
finalize() method. A subclass overrides the method to dispose of
system resources or to perform other cleanup.
The
method defined in Object class performs no action, Usually it is the
sub classes which implements the functionality of finalize.
This
method is never invoked more than once by a Java virtual machine for
any given object.
It
is a good practice to called the super class finalize method, inside
the finalize method.
Let
file “input.txt” contains “Hi How are You”
import java.io.*;
class FileReadEx{
static FileInputStream fin;
static{
try{
fin = new FileInputStream("input.txt");
}
catch(Exception e){
}
}
void readData()throws Exception{
int a;
while((a=fin.read()) != -1){
System.out.print((char)a);
}
System.out.println();
}
public void finalize()throws Throwable{
super.finalize();
System.out.println("Calling finalize method ");
fin.close();
System.out.println("Resource f1 is closed");
}
public static void main(String args[])throws Exception{
FileReadEx obj1 = new FileReadEx();
obj1.readData();
obj1 = null;
Runtime.getRuntime().gc();
Thread.sleep(3000);
}
}
Output
Hi How are You
Calling finalize method
Resource f1 is closed
Prevoius Next Home
No comments:
Post a Comment