Stack Walking API boleh menyediakan mekanisme yang fleksibel untuk menjalankan timbunan panggilan dan mengekstrak maklumat, membolehkan kami menapis dan mengakses bingkai dengan cara yang malas. Kelas StackWalker ialah titik masuk API Stack Walking. Surih tindanan mewakili tindanan panggilan pada satu masa, di mana setiap elemen mewakili kaedah panggilan . Ia mengandungi semua panggilan dari permulaan benang hingga bertelur.
Dalam contoh di bawah, kita boleh menggunakan API StackWalker untuk mencetak/memaparkan semua bingkai tindanan bagi benang semasa.
Contohimport java.lang.StackWalker.StackFrame; import java.lang.reflect.Method; import java.util.List; import java.util.stream.Collectors; public class StackWalkerTest { public static void main(String args[]) throws Exception { Method test1Method = Helper1.class.<strong>getDeclaredMethod</strong>("test1", (Class<!--?-->[])null); test1Method.invoke(null, (Object[]) null); } } <strong>// Helper1 class </strong>class Helper1 { protected static void test1() { Helper2.test2(); } } <strong>// Helper2 class</strong> class Helper2 { protected static void test2() { <strong>List<StackFrame></strong> stack = <strong>StackWalker.getInstance().walk</strong>((s) -> s.<strong>collect</strong>(Collectors.toList())); for(<strong>StackFrame </strong>frame : stack) { System.out.println(frame.<strong>getClassName()</strong> + " " + frame.<strong>getLineNumber()</strong> + " " + frame.<strong>getMethodName()</strong>); } } }
<strong>Helper2 23 test2 Helper1 16 test1 StackWalkerTest 9 main</strong>
Atas ialah kandungan terperinci Bagaimana untuk memaparkan semua bingkai tindanan benang semasa dalam Java 9?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!