Heim >Java >javaLernprogramm >In Java abschließen

In Java abschließen

王林
王林Original
2024-08-30 16:10:59445Durchsuche

Finalize ist eine Methode in Java. Diese finalizes()-Methode ähnelt der main-Methode. Diese finalizes()-Methode wird unmittelbar vor der Garbage Collection des Objekts aufgerufen. Dies bedeutet, dass das ursprüngliche Objekt die letzte Chance hat, Bereinigungsaktivitäten wie das Freigeben von Systemressourcen, das Schließen von Datenbankverbindungen, das Öffnen von Dateiverbindungen usw. durchzuführen. Das Hauptproblem bei der finalize-Methode besteht darin, dass es keine Garantie durch die Java Language Specification (JLS) gibt, dass sie aufgerufen wird vom Garbage Collector oder wann es aufgerufen wird. Betrachten wir ein Beispiel, bei dem ein Objekt bis zu einer unbestimmten Zeit warten kann, nachdem das Objekt für die Garbage Collection infrage kommt. Das bedeutet, bevor die finalize()-Methode aufgerufen wird. Ebenso gibt es nach Abschluss der aufgerufenen Methode keine Garantie, sie werden sofort erfasst. Daher macht es keinen Sinn, kritische Aktivitäten innerhalb der finalize()-Methode auszuführen. Es funktioniert möglicherweise in einer JVM und möglicherweise nicht in einer anderen JVM zum Zeitpunkt der Entwicklung. Die Methode finalize() ist in java.lang.Object verfügbar, sodass sie automatisch allen Klassen zum Überschreiben zur Verfügung steht, da Object die Klassen sind ' Basisklasse.

Wie funktioniert die finalize()-Methode in Java?

Diese finalize()-Methode wird aufgerufen, bevor ein Objekt in den Garbage Collection-Prozess aufgenommen wird. Das bedeutet, dass wir die finalize()-Methode nicht wie andere Java-Methoden manuell aufrufen können. finalize()-Methode wird nur einmal vom Garbage Collector (GC)-Thread aufgerufen.

WERBUNG Beliebter Kurs in dieser Kategorie FINANZMODELLIERUNG & BEWERTUNG – Spezialisierung | 51 Kursreihe | 30 Probetests

Starten Sie Ihren kostenlosen Softwareentwicklungskurs

Webentwicklung, Programmiersprachen, Softwaretests und andere

Code:

protected void finalize throws Throwable
{
//write some code
}

Die finalize()-Methode hat eine leere Implementierung und in unserer Klasse sind Bereinigungsaktivitäten vorhanden. Dann müssen wir diese finalize()-Methode überschreiben, um unsere Bereinigungsaktivitäten zu definieren.

Beispiele zur Implementierung von Finalize in Java

Im Folgenden sind einige Beispiele aufgeführt:

Beispiel #1

Beispiel zum Überschreiben einer Methode durch den Benutzer finalisieren

Code:
Main.java

//creating class
public class Main {
//main method for run the Java application
public static void main(String[] args)
{
//Creating String object with some content
String string = new String("I am Amardeep");
//make the string reference to null for allow it for Garbage Collection
string = null;
// Calling gc method for Garbage Collection
System.gc();
//displaying some message to the user
System.out.println("\tI am in Main method");
}
//We are Overriding finalize method.
public void finalize()
{
//displaying some message to the user
System.out.println("\tI am feeling that I am Overriding finalize method");
}
}

Ausgabe:

In Java abschließen

Erklärung: Wenn Sie die obige Ausgabe beobachten, werden Sie möglicherweise überrascht sein, dass Sie die Überschreibungsmethode nicht finalisiert haben. Wenn Sie sich den Code genau ansehen, bei dem es sich bei der gegebenen überschriebenen Methode nicht um eine echte Java-Methode handelt, handelt es sich genau um eine vom Benutzer erstellte Methode, da wir wissen, dass die tatsächliche Finalisierungsmethode durch die Signatur geschützt void finalize() geschützt ist. Wir haben dies also nicht in der Ausgabe erhalten.

Beispiel #2

Finalisieren Sie die Methode und überschreiben Sie das eigentliche Methodenbeispiel

Code:
Main.java

//creating class
public class Main {
//main method for run the Java application
public static void main(String[] args)
{
//Creating Main object
Main main = new Main();
//make the main reference to null for allow it for Garbage Collection
main = null;
// Calling gc method for Garbage Collection
System.gc();
//displaying some message to the user
System.out.println("\tI am Amardeep from main method");
}
//We are Overriding finalize method.
@Override
protected void finalize()
{
//displaying some message to the user
System.out.println("\tI am actaully Overriding now.");
}
}

Ausgabe:

In Java abschließen

Erklärung: Wie wir in der obigen Ausgabe sehen, finalisieren wir die Ausgabe der Methode finalize(), weil wir die eigentliche Methode finalize() überschreiben.

Beispiel #3

Methode aus dem Blockbeispiel finalisieren

Code:
Main.java

//creating class
public class Main {
//main method for run the Java application
public static void main(String[] args)
{
//Creating Main object
Main main = new Main();
//make the main reference to null for allow it for Garbage Collection
main = null;
// Calling gc method for Garbage Collection
System.gc();
//displaying some message to the user
System.out.println("\tI am Amardeep from main method");
}
//We are Overriding finalize method.
@Override
protected void finalize() throws Throwable {
try{
//displaying some message to the user
System.out.println("\tFinalize of Paramesh");
}catch(Throwable t){
throw t;
}finally{
//displaying some message to the user
System.out.println("\tCalling finalize from finally block");
super.finalize();
}
}
}

Ausgabe:

In Java abschließen

Beispiel #4

Beispiel für Finalisierungsmethode nicht garantiert

Code:
FinalizeNotGuarantee.java

//package com.finalize;
public class FinalizeNotGuranteed implements Runnable {
//user defined method
private void getMyMethod() throws InterruptedException {
//try block
try {
System.out.println("Hi, I am TRY");
throw new NullPointerException();
//catch block
} catch (NullPointerExceptionnpe) {
System.out.println("Hi, Iam CATCH");
//finally block
} finally {
System.out.println("Hi, I am FINALLY");
}
}
//overriding finalize method
@Override
protected void finalize() throws Throwable {
System.out.println("I am kinside finalize block");
super.finalize();
}
//overriding Thread run method
@Override
public void run() {
try {
getMyMethod();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
for (int i = 1; i<= 3; i++) {
//start the thread method run by using start method
new Thread(new FinalizeNotGuranteed()).start();
}
}
}

Ausgabe:

In Java abschließen

Erklärung: Das obige Beispiel zeigt deutlich, dass die Ausführung der Finalize-Methode nicht immer garantiert ist.

Fazit

Die Methode „Java finalizes()“ wird zum Sammeln des Garbage-Collected-Objekts verwendet. Diese Methode wird unmittelbar vor dem Aufruf der GC()-Methode aufgerufen. Es ist nicht immer garantiert, dass diese Methode ausgeführt wird.

Das obige ist der detaillierte Inhalt vonIn Java abschließen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Vorheriger Artikel:Java Base64 DekodierungNächster Artikel:Java Base64 Dekodierung