Rumah > Java > javaTutorial > teks badan

Memuktamadkan di Jawa

王林
Lepaskan: 2024-08-30 16:10:59
asal
440 orang telah melayarinya

Finalize ialah kaedah dalam Java. Kaedah memuktamadkan () ini serupa dengan kaedah utama. Kaedah memuktamadkan () ini dipanggil sebelum objek dikumpul sampah. Ini bermakna peluang terakhir objek asal untuk melakukan aktiviti pembersihan seperti melepaskan sumber sistem, menutup sambungan seperti pangkalan data, sambungan terbuka fail, dll. Masalah utama dengan kaedah pemuktamadkan ialah tiada jaminan oleh Spesifikasi Bahasa Java (JLS) yang akan dipanggil oleh pemungut sampah atau bila ia akan dipanggil. Mari kita pertimbangkan contoh bahawa objek mungkin menunggu sehingga masa yang tidak ditentukan selepas objek itu layak untuk pengumpulan sampah. Ini bermakna sebelum kaedah finalize() dipanggil. Dengan cara yang sama, selepas memuktamadkan kaedah yang dipanggil ia bukan jaminan, ia akan segera dikumpulkan. Jadi tidak ada gunanya melakukan aktiviti kritikal dalam kaedah finalize(). Ia mungkin berfungsi dalam satu JVM, dan ia mungkin tidak berfungsi dalam JVM lain pada masa kaedah development.finalize() tersedia di dalam java.lang.Object supaya ia tersedia secara automatik kepada semua kelas untuk mengatasi kerana Object ialah kelas ' kelas asas.

Bagaimana kaedah finalize() berfungsi dalam Java?

Kaedah memuktamadkan () ini dipanggil sebelum objek dikumpul sampah, jadi ini bermakna kita tidak boleh memanggil kaedah finalize() secara manual sama seperti kaedah Java yang lain. kaedah finalize() dipanggil sekali sahaja oleh garbage collector(GC) thread.

IKLAN Kursus Popular dalam kategori ini PEMODELAN & PENILAIAN KEWANGAN - Pengkhususan | 51 Siri Kursus | 30 Ujian Olok-olok

Mulakan Kursus Pembangunan Perisian Percuma Anda

Pembangunan web, bahasa pengaturcaraan, ujian perisian & lain-lain

Kod:

protected void finalize throws Throwable
{
//write some code
}
Salin selepas log masuk

Kaedah finalize() mempunyai pelaksanaan kosong, dan dalam kelas kami, terdapat aktiviti pembersihan, maka kami perlu mengatasi kaedah finalize() ini untuk menentukan aktiviti pembersihan kami.

Contoh untuk Melaksanakan Finalize dalam Java

Di bawah adalah beberapa contoh yang dinyatakan:

Contoh #1

Memuktamadkan contoh kaedah mengatasi pengguna kaedah

Kod:
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");
}
}
Salin selepas log masuk

Output:

Memuktamadkan di Jawa

Penjelasan: Jika anda melihat output di atas, anda mungkin terkejut kerana anda tidak memuktamadkan kaedah mengatasi. Jika anda memerhati dengan teliti kod yang bukan Java sebenar yang diberikan kaedah overridden, ia sama seperti kaedah yang dicipta pengguna seperti yang kita tahu kaedah pemuktamad sebenar tandatangan dilindungi void finalize(). Jadi kami tidak mendapat ini dalam output.

Contoh #2

Memuktamadkan kaedah mengatasi contoh kaedah sebenar

Kod:
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.");
}
}
Salin selepas log masuk

Output:

Memuktamadkan di Jawa

Penjelasan: Seperti yang kita lihat dalam output di atas, kita memuktamadkan() output kaedah kerana mengatasi kaedah finalize() sebenar.

Contoh #3

Memuktamadkan kaedah daripada contoh blok akhirnya

Kod:
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();
}
}
}
Salin selepas log masuk

Output:

Memuktamadkan di Jawa

Contoh #4

Memuktamadkan kaedah tidak dijamin contoh

Kod:
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();
}
}
}
Salin selepas log masuk

Output:

Memuktamadkan di Jawa

Penjelasan: Contoh di atas jelas menggambarkan bahawa kaedah pemuktamad tidak selalu menjamin untuk dilaksanakan.

Kesimpulan

Kaedah Java memuktamadkan () digunakan untuk mengumpul objek kutipan sampah. Kaedah ini dipanggil sebelum kaedah GC() dipanggil. Kaedah ini tidak selalu dijamin untuk dilaksanakan.

Atas ialah kandungan terperinci Memuktamadkan di Jawa. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:php
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan