ij.plugin.ThreadLister Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of ij Show documentation
Show all versions of ij Show documentation
ImageJ is an open source Java image processing program inspired by NIH Image for the Macintosh.
package ij.plugin;
import java.io.*;
import ij.*;
import ij.text.*;
import javax.swing.SwingUtilities;
/**
* Displays thread information in a text window.
*
* This code is from the book _Java in a Nutshell_ by David Flanagan.
* Written by David Flanagan.
*/
public class ThreadLister implements PlugIn {
public void run(String arg) {
if (IJ.getApplet()!=null)
return;
CharArrayWriter caw = new CharArrayWriter();
PrintWriter pw = new PrintWriter(caw);
try {
listAllThreads(pw);
new TextWindow("Threads", caw.toString(), 420, 420);
} catch
(Exception e) {}
// cause an exception on the EDT
if (IJ.altKeyDown()) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
((Object) null).toString();
}
});
}
// cause an exception off the EDT
//((Object) null).toString();
}
// Display info about a thread.
private static void print_thread_info(PrintWriter out, Thread t,
String indent) {
if (t == null) return;
out.print(indent + "Thread: " + t.getName() +
" Priority: " + t.getPriority() +
(t.isDaemon()?" Daemon":"") +
(t.isAlive()?"":" Not Alive") + "\n");
}
// Display info about a thread group and its threads and groups
private static void list_group(PrintWriter out, ThreadGroup g,
String indent) {
if (g == null) return;
int num_threads = g.activeCount();
int num_groups = g.activeGroupCount();
Thread[] threads = new Thread[num_threads];
ThreadGroup[] groups = new ThreadGroup[num_groups];
g.enumerate(threads, false);
g.enumerate(groups, false);
out.println(indent + "Thread Group: " + g.getName() +
" Max Priority: " + g.getMaxPriority() + "\n");
for(int i = 0; i < num_threads; i++)
print_thread_info(out, threads[i], indent + " ");
for(int i = 0; i < num_groups; i++)
list_group(out, groups[i], indent + " ");
}
// Find the root thread group and list it recursively
public static void listAllThreads(PrintWriter out) {
ThreadGroup current_thread_group;
ThreadGroup root_thread_group;
ThreadGroup parent;
// Get the current thread group
current_thread_group = Thread.currentThread().getThreadGroup();
// Now go find the root thread group
root_thread_group = current_thread_group;
parent = root_thread_group.getParent();
while(parent != null) {
root_thread_group = parent;
parent = parent.getParent();
}
// And list it, recursively
list_group(out, root_thread_group, "");
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy