Heim  >  Artikel  >  Java  >  Wie zeige ich alle Stapelrahmen des aktuellen Threads in Java 9 an?

Wie zeige ich alle Stapelrahmen des aktuellen Threads in Java 9 an?

WBOY
WBOYnach vorne
2023-09-05 20:09:06800Durchsuche

在Java 9中如何显示当前线程的所有堆栈帧?

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.

Beispiel

import 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!

Stellungnahme:
Dieser Artikel ist reproduziert unter:tutorialspoint.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen
Vorheriger Artikel:Julia gegen JavaNächster Artikel:Julia gegen Java