Heim > Java > javaLernprogramm > 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
Freigeben: 2023-09-05 20:09:06
nach vorne
873 Leute haben es durchsucht

在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>);
      }
   }
}
Nach dem Login kopieren

Ausgabe< h2>
<strong>Helper2 23 test2
Helper1 16 test1
StackWalkerTest 9 main</strong>
Nach dem Login kopieren

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!

Quelle:tutorialspoint.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage