- Java.lang 包類
- Java.lang - 首頁
- Java.lang - Boolean
- Java.lang - Byte
- Java.lang - Character
- Java.lang - Character.Subset
- Java.lang - Character.UnicodeBlock
- Java.lang - Class
- Java.lang - ClassLoader
- Java.lang - Compiler
- Java.lang - Double
- Java.lang - Enum
- Java.lang - Float
- Java.lang - InheritableThreadLocal
- Java.lang - Integer
- Java.lang - Long
- Java.lang - Math
- Java.lang - Number
- Java.lang - Object
- Java.lang - Package
- Java.lang - Process
- Java.lang - ProcessBuilder
- Java.lang - Runtime
- Java.lang - RuntimePermission
- Java.lang - SecurityManager
- Java.lang - Short
- Java.lang - StackTraceElement
- Java.lang - StrictMath
- Java.lang - String
- Java.lang - StringBuffer
- Java.lang - StringBuilder
- Java.lang - System
- Java.lang - Thread
- Java.lang - ThreadGroup
- Java.lang - ThreadLocal
- Java.lang - Throwable
- Java.lang - Void
- Java.lang 包額外內容
- Java.lang - 介面
- Java.lang - 錯誤
- Java.lang - 異常
- Java.lang 包有用資源
- Java.lang - 有用資源
- Java.lang - 討論
Java Thread getAllStackTraces() 方法
描述
Java Thread getAllStackTraces() 方法返回所有活動執行緒的堆疊跟蹤對映。對映鍵是執行緒,每個對映值都是一個StackTraceElement陣列,表示相應Thread的堆疊轉儲。
宣告
以下是java.lang.Thread.getAllStackTraces()方法的宣告
public static Map<Thread,StackTraceElement[]> getAllStackTraces()
引數
無
返回值
此方法返回一個從 Thread 到 StackTraceElement 陣列的對映,該陣列表示相應執行緒的堆疊跟蹤。
異常
SecurityException − 如果存在安全管理器並且其 checkPermission 方法不允許獲取執行緒的堆疊跟蹤。
示例:在多執行緒環境中獲取堆疊跟蹤對映
以下示例演示了 Java Thread getAllStackTraces() 方法的用法。在此程式中,我們透過實現 Runnable 介面建立了一個執行緒類 ThreadDemo。在主方法中,建立 ThreadDemo 物件,並使用該物件建立一個執行緒並啟動它。現在,使用 getAllStackTraces() 方法檢索並列印堆疊跟蹤對映。
package com.tutorialspoint;
import java.util.*;
public class ThreadDemo implements Runnable {
public void run() {
System.out.println("This is run() method");
}
public static void main(String args[]) {
ThreadDemo trace = new ThreadDemo();
Thread t = new Thread(trace);
// this will call run() method
t.start();
// returns a map of stack traces
Map m = Thread.getAllStackTraces();
System.out.println(m);
}
}
輸出
讓我們編譯並執行上述程式,這將產生以下結果:
This is run() method
{Thread[#1,main,5,main]=[Ljava.lang.StackTraceElement;@5caf905d, Thread[#20,Common-Cleaner,8,InnocuousThreadGroup]=[Ljava.lang.StackTraceElement;@27716f4, Thread[#9,Reference Handler,10,system]=[Ljava.lang.StackTraceElement;@8efb846, Thread[#12,Attach Listener,5,system]=[Ljava.lang.StackTraceElement;@2a84aee7, Thread[#10,Finalizer,8,system]=[Ljava.lang.StackTraceElement;@a09ee92, Thread[#19,Notification Thread,9,system]=[Ljava.lang.StackTraceElement;@30f39991, Thread[#21,Thread-0,5,]=[Ljava.lang.StackTraceElement;@452b3a41, Thread[#11,Signal Dispatcher,9,system]=[Ljava.lang.StackTraceElement;@4a574795}
示例:在單執行緒程式中獲取堆疊跟蹤對映
以下示例演示了 Java Thread getAllStackTraces() 方法的用法。在此程式中,我們建立了一個類 ThreadDemo。在主方法中,使用 currentThread() 方法檢索當前執行緒並列印它。使用 activeCount() 檢索並列印活動執行緒的數量。現在,使用 getAllStackTraces() 方法檢索並列印堆疊跟蹤對映。
package com.tutorialspoint;
import java.util.Map;
public class ThreadDemo {
public static void main(String[] args) {
Thread t = Thread.currentThread();
t.setName("Admin Thread");
// set thread priority to 1
t.setPriority(1);
// prints the current thread
System.out.println("Thread = " + t);
int count = Thread.activeCount();
System.out.println("currently active threads = " + count);
// returns a map of stack traces
Map m = Thread.getAllStackTraces();
System.out.println(m);
}
}
輸出
讓我們編譯並執行上述程式,這將產生以下結果:
Thread = Thread[#1,Admin Thread,1,main]
currently active threads = 1
{Thread[#1,Admin Thread,1,main]=[Ljava.lang.StackTraceElement;@2f2c9b19, Thread[#19,Notification Thread,9,system]=[Ljava.lang.StackTraceElement;@31befd9f, Thread[#20,Common-Cleaner,8,InnocuousThreadGroup]=[Ljava.lang.StackTraceElement;@1c20c684, Thread[#12,Attach Listener,5,system]=[Ljava.lang.StackTraceElement;@1fb3ebeb, Thread[#9,Reference Handler,10,system]=[Ljava.lang.StackTraceElement;@548c4f57, Thread[#10,Finalizer,8,system]=[Ljava.lang.StackTraceElement;@1218025c, Thread[#11,Signal Dispatcher,9,system]=[Ljava.lang.StackTraceElement;@816f27d}
java_lang_thread.htm
廣告