<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Cyh的博客

    Email:kissyan4916@163.com
    posts - 26, comments - 19, trackbacks - 0, articles - 220

    線程7--列出虛擬機中所有的線程

    Posted on 2009-06-02 20:49 啥都寫點 閱讀(266) 評論(0)  編輯  收藏 所屬分類: J2SE
    關(guān)鍵技術(shù):
    • 虛擬機中的任何線程都處于線程組ThreadGroup中,線程組也可以包含子線程組。
    • Thread的currentThread靜態(tài)方法能夠獲得當(dāng)前線程的引用。
    • Thread的getThreadGroup實例方法能夠獲得當(dāng)前線程所屬的線程組。
    • ThreadGroup的getParent實例方法能夠獲得當(dāng)前線程組的父線程組,根線程組的父線程組為NULL。

    package book.thread;

    public class ListAllRunningThread {
        
    /**
         * 列出所有線程的信息
         
    */
        
    public static void list(){
            
    //獲取當(dāng)前線程所屬線程組的父線程組
            ThreadGroup root = Thread.currentThread().getThreadGroup().getParent();
            
    //不斷循環(huán),直到找到根線程組
            while (root.getParent() != null) {
                root 
    = root.getParent();
            }
            
    //訪問根線程組下的線程
            visit(root, 0);
        }
        
    /**
         * 遞歸的顯示線程組中的線程
         * 
    @param group
         * 
    @param level
         
    */
        
    private static void visit(ThreadGroup group, int level) {
            
    // 獲取group線程組中活動線程的估計數(shù)
            int numThreads = group.activeCount();
            Thread[] threads 
    = new Thread[numThreads];
            
    // 把此線程組中的所有活動線程復(fù)制到指定數(shù)組中。
            
    // false表示不包括作為此線程組的子組的線程組中的線程。
            numThreads = group.enumerate(threads, false);
        
            
    // 遍歷活動線程數(shù)組,打印它們的名字
            for (int i=0; i<numThreads; i++) {
                
    // Get thread
                Thread thread = threads[i];
                
    for (int j=0; j<level; j++){
                    System.out.print(
    "  ");
                }
                System.out.println(
    "" + thread.getName());
            }
        
            
    // 獲取group線程組中活動子線程組的估計數(shù)
            int numGroups = group.activeGroupCount();
            ThreadGroup[] groups 
    = new ThreadGroup[numGroups];
            
    // 把對此線程組中的所有活動子組的引用復(fù)制到指定數(shù)組中。
            numGroups = group.enumerate(groups, false);
        
            
    // 遞歸的訪問子線程組中的線程
            for (int i=0; i<numGroups; i++) {
                visit(groups[i], level
    +1);
            }
        }
        
    /**
         * 
    @param args
         
    */
        
    public static void main(String[] args) {
            
    //建立一個線程組
            ThreadGroup group1 = new ThreadGroup("ThreadGroup-1");
            
    //建立3個線程并啟動
            Thread[] threads1 = new Thread[3];
            
    for (int i=1; i<4; i++){
                
    //新的線程屬于group1線程組,以ThreadA為運行對象,名字為"group1-ThreadA-i"
                threads1[i-1= new Thread(group1, new ThreadA(i*2000), "group1-ThreadA-" + i);
                threads1[i
    -1].start();
            }
            
    //建立另一個線程組,屬于group1線程組
            ThreadGroup group2 = new ThreadGroup(group1, "ThreadGroup-2");
            
    //建立3個線程并啟動
            Thread[] threads2 = new Thread[3];
            
    for (int i=1; i<4; i++){
                
    //新的線程屬于group2線程組,以ThreadA為運行對象,名字為"group2-ThreadA-i"
                threads2[i-1= new Thread(group2, new ThreadA(i*1000), "group2-ThreadA-" + i);
                threads2[i
    -1].start();
            }
            
    //列出所有活動的線程的名字
            System.out.println("當(dāng)前虛擬機中所有正在運行的線程:");
            ListAllRunningThread.list();
        }
        
        
    static class ThreadA extends Thread{
            
    private long sleepTime = 100;
            
    public ThreadA(long time){
                
    this.sleepTime = time;
            }
            
    public void run(){
                
    try {
                    Thread.sleep(
    this.sleepTime);
                } 
    catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
        }
    }



                                                                                                           --    學(xué)海無涯
            

    主站蜘蛛池模板: 中文字幕在线视频免费| 久久久久久精品成人免费图片| 老司机午夜在线视频免费观| 三级毛片在线免费观看| 狠狠色婷婷狠狠狠亚洲综合| 亚洲无砖砖区免费| 一个人免费播放在线视频看片| 4399好看日本在线电影免费| 亚洲另类激情专区小说图片| 亚洲中文字幕在线无码一区二区 | 亚洲综合一区二区精品导航| 天堂亚洲国产中文在线| 日本亚洲欧洲免费天堂午夜看片女人员 | 亚洲美日韩Av中文字幕无码久久久妻妇| 欧亚一级毛片免费看| 一本无码人妻在中文字幕免费| 国产亚洲精品不卡在线| 91视频免费观看高清观看完整| 精品久久久久久久免费加勒比| 亚洲欧洲免费视频| 一个人看的www免费在线视频| 色久悠悠婷婷综合在线亚洲| 国产亚洲漂亮白嫩美女在线 | 亚洲成AV人影片在线观看| 在线观看成人免费视频不卡| 亚洲午夜精品一区二区公牛电影院| 在线成人精品国产区免费| 亚洲精品99久久久久中文字幕 | 成视频年人黄网站免费视频| 国产精品亚洲专区无码WEB| 男女做羞羞的事视频免费观看无遮挡| 亚洲国产精品特色大片观看完整版| 午夜在线免费视频 | 最新国产AV无码专区亚洲| 亚洲免费视频观看| 亚洲av午夜国产精品无码中文字| 91在线视频免费91| 日韩a毛片免费观看| 亚洲精品无码久久久久久久| 91热久久免费精品99| 亚洲色欲www综合网|