在Java中,可以使用Thread.currentThread().getStackTrace()
方法獲取當(dāng)前線程的堆棧跟蹤信息。然后,可以遍歷這個(gè)數(shù)組并打印每個(gè)元素來顯示堆棧跟蹤。以下是一個(gè)示例:
public class PrintStackTraceExample {
public static void main(String[] args) {
// 創(chuàng)建一個(gè)新線程
Thread thread = new Thread(() -> {
// 在這里放置你想要獲取堆棧跟蹤的代碼
printStackTrace();
});
// 啟動(dòng)線程
thread.start();
}
public static void printStackTrace() {
// 獲取當(dāng)前線程的堆棧跟蹤信息
StackTraceElement[] stackTraceElements = Thread.currentThread().getStackTrace();
// 打印堆棧跟蹤信息
System.out.println("Stack trace of thread '" + Thread.currentThread().getName() + "':");
for (StackTraceElement element : stackTraceElements) {
System.out.println("\tat " + element);
}
}
}
這個(gè)示例中,我們創(chuàng)建了一個(gè)新線程,并在其中調(diào)用printStackTrace()
方法。這個(gè)方法獲取當(dāng)前線程的堆棧跟蹤信息,并遍歷數(shù)組打印每個(gè)元素。運(yùn)行此代碼將顯示類似于以下內(nèi)容的輸出:
Stack trace of thread 'Thread-0':
at PrintStackTraceExample.printStackTrace(PrintStackTraceExample.java:21)
at PrintStackTraceExample.lambda$main$0(PrintStackTraceExample.java:12)
at PrintStackTraceExample$$Lambda$1/1687943569.run(Unknown Source)
at java.lang.Thread.run(Thread.java:748)
請注意,這個(gè)輸出可能因Java版本和JVM實(shí)現(xiàn)而異。