Stack Walking API kann einen flexiblen Mechanismus zum Durchlaufen des Aufrufstapels und zum Extrahieren von Informationen bereitstellen, sodass wir Frames träge filtern und darauf zugreifen können. Die Klasse „StackWalker“ ist der Einstiegspunkt der Stack Walking API. Ein Stack-Trace stellt einen Aufrufstapel zu einem Zeitpunkt dar, wobei jedes Element einen Methodenaufruf darstellt. Es enthält alle Aufrufe vom Thread-Start bis zum Spawnen. Im folgenden Beispiel können wir die StackWalker-API verwenden, um alle Stapelrahmen des aktuellen Threads zu drucken/anzeigen.
Beispielimport 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>); } } }Ausgabe
<strong>Helper2 23 test2 Helper1 16 test1 StackWalkerTest 9 main</strong>
Das obige ist der detaillierte Inhalt vonWie zeige ich alle Stapelrahmen des aktuellen Threads in Java 9 an?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!