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

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

WBOY
Lepaskan: 2023-09-05 20:09:06
ke hadapan
854 orang telah melayarinya

在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>);
      }
   }
}
Salin selepas log masuk

Output

<strong>Helper2 23 test2
Helper1 16 test1
StackWalkerTest 9 main</strong>
Salin selepas log masuk

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!

sumber:tutorialspoint.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan