Skip to content
Snippets Groups Projects
Commit 7bee2e03 authored by felmer's avatar felmer
Browse files

SP-320: Helper class ThreadDump added.

SVN: 26864
parent b787fae5
No related branches found
No related tags found
No related merge requests found
/*
* Copyright 2012 ETH Zuerich, CISD
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package ch.systemsx.cisd.common.utilities;
import java.io.PrintWriter;
import java.lang.Thread.State;
import java.util.Collection;
import java.util.Map;
import java.util.Map.Entry;
/**
* Helper class which dumps all threads onto the console or a {@link PrintWriter}.
*
* @author Franz-Josef Elmer
*/
public class ThreadDump
{
/**
* Dumps all threads onto System.out.
*/
public static void dumpAllThreads()
{
PrintWriter writer = new PrintWriter(System.out);
dumpAllThreads(writer);
writer.flush();
}
/**
* Dumps all threads onto the specified writer.
*/
public static void dumpAllThreads(PrintWriter writer)
{
Map<Thread, StackTraceElement[]> allStackTraces = Thread.getAllStackTraces();
Collection<Entry<Thread, StackTraceElement[]>> allDumps = allStackTraces.entrySet();
for (Entry<Thread, StackTraceElement[]> entry : allDumps)
{
Thread thread = entry.getKey();
State state = thread.getState();
writer.println(thread + " state: " + State.valueOf(state.name()) + " daemon: "
+ thread.isDaemon() + " alive: " + thread.isAlive() + " interrupted: "
+ thread.isInterrupted());
StackTraceElement[] stackTraceElements = entry.getValue();
for (StackTraceElement stackTraceElement : stackTraceElements)
{
writer.println("\tat " + stackTraceElement);
}
writer.println();
}
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment