Setiap kali anda perlu menjalankan proses, kod atau utas dalam Java, tindanan masa jalan dicipta untuk menyimpan operasi yang dilakukan apabila utas dilaksanakan.
Setiap entri dalam tindanan masa jalan dipanggil bingkai tindanan atau rekod pengaktifan. Sebaik sahaja proses memanggil fungsi, data yang dikaitkan dengannya dialih keluar daripada timbunan masa jalan.
Apabila semua fungsi telah dipanggil, timbunan masa jalan akan kosong. Ini bermakna ia perlu dikeluarkan dari ingatan.
Pada ketika ini, timbunan masa jalan dimusnahkan dan kemudian benang ditamatkan.
Penamatan benang boleh berlaku apabila benang selesai (sukarela) atau terpaksa (penamatan tidak normal).
Tertib pemusnahan unsur dalam timbunan masa jalan adalah bertentangan dengan tertib penciptaan entri tugasan masa jalan.
Apabila benang berjalan seperti biasa dan menyelesaikan pelaksanaan, fungsi utama dipanggil dan kemasukannya disimpan dalam timbunan masa jalan. Begitu juga, fungsi lain (jika ada) dipanggil dan entrinya disimpan. Apabila pelaksanaan fungsi selesai, pada masa itulah entri dialih keluar daripada timbunan masa jalan. Fungsi terakhir yang dilaksanakan ialah fungsi entri pertama yang dipadam.
Apabila benang ditamatkan secara tidak normal, ini bermakna semua baris kod tidak dapat dilaksanakan dengan jayanya. Ini bermakna pengecualian dilemparkan apabila ralat ditemui. Berikut ialah contoh:
Demo dalam talian
public class Demo{ public static void main(String[] args){ test(); } public static void test(){ test_2(); System.out.println("This is a test method."); } public static void test_2(){ System.out.println(45/0); System.out.println("This is a method that divides 10 by 0."); } }
Exception in thread "main" java.lang.ArithmeticException: / by zero at Demo.test_2(Demo.java:14) at Demo.test(Demo.java:9) at Demo.main(Demo.java:5)
Kelas bernama Demo mengandungi fungsi utama, di mana fungsi 'ujian' dipanggil. Fungsi 'test' ditakrifkan dan fungsi 'test_2' dipanggil di dalamnya. Fungsi yang dipanggil 'test_2' ditakrifkan di mana percubaan dibuat untuk membahagikan nombor dengan 0. Ini menyebabkan pengecualian dicetak pada konsol. Oleh itu, kawalan tidak mencapai baris 'println' untuk mencetak mesej ralat.
Atas ialah kandungan terperinci Mekanisme tindanan masa jalan dalam Java. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!