?? threadlister.java
字號:
// This example is from _Java Examples in a Nutshell_. (http://www.oreilly.com)// Copyright (c) 1997 by David Flanagan// This example is provided WITHOUT ANY WARRANTY either expressed or implied.// You may study, use, modify, and distribute it for non-commercial purposes.// For any commercial use, see http://www.davidflanagan.com/javaexamplespackage org.selman.java3d.book.common;import java.io.*;/** * This class contains a useful static method for listing all threads * and threadgroups in the VM. It also has a simple main() method so it * can be run as a standalone program. **/public class ThreadLister { /** Display information about a thread. */ private static void printThreadInfo( PrintWriter out, Thread t, String indent ) { if (t == null) return; out.println( indent + "Thread: " + t.getName( ) + " Priority: " + t.getPriority( ) + (t.isDaemon( )?" Daemon":"") + (t.isAlive( )?"":" Not Alive")); } /** Display info about a thread group and its threads and groups */ private static void printGroupInfo( 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( ) + (g.isDaemon( )?" Daemon":"")); for(int i = 0; i < num_threads; i++) printThreadInfo( out, threads[i], indent + " " ); for(int i = 0; i < num_groups; i++) printGroupInfo( 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 printGroupInfo( out, root_thread_group, "" ); } /** * The main() method: just print the list of threads to the console **/ public static void main( String[] args ) { PrintWriter out = new PrintWriter( new OutputStreamWriter( System.out ) ); ThreadLister.listAllThreads( out ); out.flush( ); } /** * This nested class is a simple applet that displays the output of * ThreadLister.listAllThreads() when run from an the start() method of * an applet. The output from an applet is typically different than the * output when run from a standalone program. **/ public static class Applet extends java.applet.Applet { java.awt.TextArea textarea; // Where to display the output. /** Create a text area to put our listing in */ public void init( ) { textarea = new java.awt.TextArea( ); this.setLayout( new java.awt.BorderLayout( ) ); this.add( "Center", textarea ); } /** When the applet starts, list all the threads */ public void start( ) { StringWriter sout = new StringWriter( ); // Capture listing in a string PrintWriter out = new PrintWriter( sout ); ThreadLister.listAllThreads( out ); out.flush( ); textarea.setText( sout.toString( ) ); // Display the listing } }}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -