Java Thread dumpStack() Method



Description

The Java Thread dumpStack() method prints a stack trace of the current thread to the standard error stream. This method is used only for debugging.

Declaration

Following is the declaration for java.lang.Thread.dumpStack() method

public static void dumpStack()

Parameters

NA

Return Value

This method does not return any value.

Exception

NA

Example: Printing Stack trace of a thread in Single Threaded Environment

The following example shows the usage of Java Thread dumpStack() method. In this program, we've created a class ThreadDemo. In main method, we've retrieved current thread using currentThread() method, then printed the active thread count using activeCount() method. In the end, we've printed the stack trace using dumpStack() method.

package com.tutorialspoint;

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);
    
      /* prints a stack trace of the current thread to the standard
         error stream, used for debugging */
      Thread.dumpStack();
   }
}

Output

Let us compile and run the above program, this will produce the following result −

Thread = Thread[#1,Admin Thread,1,main]
currently active threads = 1
java.lang.Exception: Stack trace
	at java.base/java.lang.Thread.dumpStack(Thread.java:2209)
	at com.tutorialspoint.ThreadDemo.main(ThreadDemo.java:21)

Example: Printing Stack trace of a thread in Multi Threaded Environment

The following example shows the usage of Java Thread dumpStack() method. In this program, we've created a thread class ThreadDemo by implementing Runnable interface. In constructor, we've retrieved current thread using currentThread() method, then created another thread and using start() method, started the same. In the end, we've printed the stack trace using dumpStack() method. In main method, instance of ThreadDemo class is created.

package com.tutorialspoint;

public class ThreadDemo implements Runnable {

   ThreadDemo() {
      // main thread
      Thread currThread = Thread.currentThread();
      
      // thread created
      Thread t = new Thread(this, "Admin Thread");
   
      System.out.println("current thread = " + currThread);
      System.out.println("thread created = " + t);
      
      // this will call run() function
      t.start();
	  
      /* prints a stack trace of the current thread to the standard
         error stream, used for debugging */
      Thread.dumpStack();
   }

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

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

Output

Let us compile and run the above program, this will produce the following result −

current thread = Thread[#1,main,5,main]
thread created = Thread[#21,Admin Thread,5,main]
This is run() method
java.lang.Exception: Stack trace
	at java.base/java.lang.Thread.dumpStack(Thread.java:2209)
	at com.tutorialspoint.ThreadDemo.<init>(ThreadDemo.java:20)
	at com.tutorialspoint.ThreadDemo.main(ThreadDemo.java:28)
java_lang_thread.htm
Advertisements