Java 執行緒 getStackTrace() 方法



描述

Java Thread getStackTrace() 方法返回一個棧跟蹤元素陣列,表示該執行緒的棧轉儲。如果該執行緒尚未啟動或已終止,則將返回一個零長度陣列。

如果返回的陣列長度不為零,則陣列的第一個元素表示棧頂,它是序列中最新的方法呼叫。陣列的最後一個元素表示棧底,它是序列中最舊的方法呼叫。

宣告

以下是 java.lang.Thread.getStackTrace() 方法的宣告

public StackTraceElement[] getStackTrace()

引數

返回值

此方法返回一個 StackTraceElement 陣列,每個元素代表一個棧幀。

異常

SecurityException - 如果存在安全管理器並且其 checkPermission 方法不允許獲取執行緒的堆疊跟蹤。

示例:在單執行緒環境中獲取 StackTrace

以下示例演示了 Java Thread getStackTrace() 方法的用法。在此程式中,我們建立了一個類 ThreadDemo。在 main 方法中,呼叫 ThreadDemo 例項方法 getStackTrace(),該方法依次檢索當前執行緒並使用 getStackTrace() 獲取堆疊跟蹤並列印類名。

package com.tutorialspoint;

public class ThreadDemo {

   public static void main(String[] args) {
      new ThreadDemo().getStackTrace();
   }

   public void getStackTrace() {
      System.out.println(Thread.currentThread().getStackTrace()[3].getClassName());
   }
} 

輸出

讓我們編譯並執行以上程式,這將產生以下結果:

com.tutorialspoint.ThreadDemo

示例:在多執行緒環境中獲取 StackTrace

以下示例演示了 Java Thread activeCount() 方法的用法。在此程式中,我們透過實現 Runnable 介面建立了一個執行緒類 ThreadDemo。在建構函式中,使用 currentThread() 方法檢索當前執行緒,並使用 new Thread 建立一個新執行緒。使用 getStackTrace() 獲取堆疊跟蹤並列印類名。

package com.tutorialspoint;

public class ThreadDemo implements Runnable {

   ThreadDemo() {     
      // thread created
      Thread t = new Thread(this, "Admin Thread");
      
      // this will call run() function
      t.start();

	  System.out.println(Thread.currentThread().getStackTrace()[2].getClassName());
   }

   public void run() {
      System.out.println("This is run() method");
   }

   public static void main(String args[]) {
      new ThreadDemo();
   }
}

輸出

讓我們編譯並執行以上程式,這將產生以下結果:

This is run() method
com.tutorialspoint.ThreadDemo
java_lang_thread.htm
廣告

© . All rights reserved.