Rumah  >  Artikel  >  Java  >  Bagaimana untuk memaparkan semua bingkai tindanan benang semasa dalam Java 9?

Bagaimana untuk memaparkan semua bingkai tindanan benang semasa dalam Java 9?

WBOY
WBOYke hadapan
2023-09-05 20:09:06796semak imbas

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

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.

Contoh
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>);
      }
   }
}

Output

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

Kenyataan:
Artikel ini dikembalikan pada:tutorialspoint.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam
Artikel sebelumnya:Julia VS JavaArtikel seterusnya:Julia VS Java