listthreads.html

来自「java类库详细讲解」· HTML 代码 · 共 220 行

HTML
220
字号
<HTML>
<HEAD>
<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
<TITLE>Listing All Running Threads
(Java Developers Almanac Example)
</TITLE>
<META CONTENT="Patrick Chan" NAME="AUTHOR">
<META CONTENT="Code Examples from The Java Developers Almanac 1.4" NAME="DESCRIPTION">
<META CONTENT="Addison-Wesley/Patrick Chan" NAME="OWNER">
<META CONTENT="3/20/02" NAME="revision">
<STYLE TYPE="text/css">
<!--     BODY CODE  {font-family: Courier, Monospace;           font-size: 11pt}    TABLE, BODY          {font-family: Verdana, Arial, Helvetica, sans-serif;           font-size: 10pt}    PRE   {font-family: Courier, Monospace;           font-size: 10pt}    H3    {font-family: Verdana, Arial, Helvetica, sans-serif;           font-size: 11pt}    A.eglink {text-decoration: none}    A:hover.eglink {text-decoration: underline}    -->
</STYLE>
</HEAD>
<BODY>
<TABLE CELLSPACING="0" CELLPADDING="0" BORDER="0">
<TR>
<TD rowspan="3"><A HREF="/?l=ex"><IMG BORDER="0" ALIGN="BOTTOM" HSPACE="10" SRC="/egs/almanac14a.jpg"></A></TD><TD VALIGN="top"><font face="Times" size="6"><b>The Java Developers Almanac 1.4</b></font>
<br>
        Order this book from <a href="/cgi-bin/scripts/redirect.pl?l=ex&url=http://www.amazon.com/exec/obidos/ASIN/0201752808/xeo">Amazon</a>.
    </TD>
</TR>
<TR>
<TD align="right" valign="bottom">
<FORM method="get" action="/cgi-bin/search/find.pl">
<INPUT size="25" name="words" type="text"><INPUT value="Search" type="submit">
</FORM>
</TD>
</TR>
</TABLE>
<HR color="#6666cc">
<DIV ALIGN="LEFT">
<A HREF="/">Home</A>
    &gt;
    <A HREF="../index.html">List of Packages</A>
    &gt;
    <B><A HREF="../java.lang/pkg.html">java.lang</A></B><font color="#666666" SIZE="-2">
        &nbsp;[58 examples]
        </font>
        &gt;
        <B><A HREF="../java.lang/pkg.html#Threads">Threads</A></B><font color="#666666" SIZE="-2">
            &nbsp;[11 examples]
            </font>
</DIV><P>
  <h3>
    e99.  
    Listing All Running Threads</h3>

A thread exists in a thread group and a thread group can contain other
thread groups. This example visits all threads in all thread groups.


<pre>
    // Find the root thread group
    ThreadGroup root = Thread.currentThread().getThreadGroup().getParent();
    while (root.getParent() != null) {
        root = root.getParent();
    }
    
    // Visit each thread group
    visit(root, 0);
    
    // This method recursively visits all thread groups under `group'.
    public static void visit(ThreadGroup group, int level) {
        // Get threads in `group'
        int numThreads = group.activeCount();
        Thread[] threads = new Thread[numThreads*2];
        numThreads = group.enumerate(threads, false);
    
        // Enumerate each thread in `group'
        for (int i=0; i&lt;numThreads; i++) {
            // Get thread
            Thread thread = threads[i];
        }
    
        // Get thread subgroups of `group'
        int numGroups = group.activeGroupCount();
        ThreadGroup[] groups = new ThreadGroup[numGroups*2];
        numGroups = group.enumerate(groups, false);
    
        // Recursively visit each subgroup
        for (int i=0; i&lt;numGroups; i++) {
            visit(groups[i], level+1);
        }
    }
</pre>
Here's an example of some thread groups that contain some threads:

<pre>
    java.lang.ThreadGroup[name=system,maxpri=10]
        Thread[Reference Handler,10,system]
        Thread[Finalizer,8,system]
        Thread[Signal Dispatcher,10,system]
        Thread[CompileThread0,10,system]
        java.lang.ThreadGroup[name=main,maxpri=10]
            Thread[main,5,main]
            Thread[Thread-1,5,main]
</pre>
<P><table width="600" CELLSPACING="0" CELLPADDING="2" BORDER="0">
<tr>
<td bgcolor="#6666cc" align="center"><font color="#ffffff">
            &nbsp;Related Examples
        </font></td>
</tr>
</table>


e92. <a class="eglink" href="BasicThread.html?l=rel">
    Creating a Thread
</a>
<br>

e93. <a class="eglink" href="StopThread.html?l=rel">
    Stopping a Thread
</a>
<br>

e94. <a class="eglink" href="IfStopped.html?l=rel">
    Determining When a Thread Has Finished
</a>
<br>

e95. <a class="eglink" href="Sleep.html?l=rel">
    Pausing the Current Thread
</a>
<br>

e96. <a class="eglink" href="PauseThread.html?l=rel">
    Pausing a Thread
</a>
<br>

e97. <a class="eglink" href="IfLocked.html?l=rel">
    Determining If the Current Thread Is Holding a Synchronized Lock
</a>
<br>

e98. <a class="eglink" href="DaemonThread.html?l=rel">
    Allowing an Application with Live Threads to Exit
</a>
<br>

e100. <a class="eglink" href="TLocal.html?l=rel">
    Using a Thread-local Variable
</a>
<br>

e101. <a class="eglink" href="GetStack.html?l=rel">
    Getting the Stack Trace of an Exception
</a>
<br>

e102. <a class="eglink" href="WorkQueue.html?l=rel">
    Implementing a Work Queue
</a>
<br>


<table width="600" CELLSPACING="0" CELLPADDING="2" BORDER="0">
<tr>
<td align="left">
<br>
        See also: 
<a class="eglink" href="/egs/java.lang/pkg.html?l=rel#Arrays">
    Arrays
</a>&nbsp;&nbsp;

<a class="eglink" href="/egs/java.lang/pkg.html?l=rel#Assertions">
    Assertions
</a>&nbsp;&nbsp;

<a class="eglink" href="/egs/java.lang/pkg.html?l=rel#Classes">
    Classes
</a>&nbsp;&nbsp;

<a class="eglink" href="/egs/java.lang/pkg.html?l=rel#Commands">
    Commands
</a>&nbsp;&nbsp;

<a class="eglink" href="/egs/java.lang/pkg.html?l=rel#Numbers">
    Numbers
</a>&nbsp;&nbsp;

<a class="eglink" href="/egs/java.lang/pkg.html?l=rel#Objects">
    Objects
</a>&nbsp;&nbsp;

<a class="eglink" href="/egs/java.lang/pkg.html?l=rel#Strings">
    Strings
</a>&nbsp;&nbsp;

<a class="eglink" href="/egs/java.lang/pkg.html?l=rel#System%20Properties">
    System Properties
</a>&nbsp;&nbsp;

</td>
</tr>
</table>

<br>

<br>
<FONT FACE="Verdana, Arial, Helvetica, sans-serif" SIZE="0">
&copy; 2002 Addison-Wesley.
</FONT>
</BODY>
</HTML>

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?