隨筆-4  評論-15  文章-0  trackbacks-0

          此時程序中最多有幾個存活的線程,個人認為應該是4個,怎么就是看不到是4個的結果呢?
          package Test;

          public class Testthread{
               public static void main(String[] args){

                //測定當前活動的線程數目 肯定有一個主線程在運行
                System.out.println("=========header========"+Thread.activeCount());
                ThreadTest tt=new ThreadTest();  
                RunTest rt=new RunTest();
          //在下面新建線程里被啟動

                new Thread(rt).start();      //新建立的一個線程 啟動
                tt.start();                        //已經建立的線程 啟動
                System.out.println("===========footer======"+Thread.activeCount());
           }
          }
          class ThreadTest extends Thread{
           public void run(){
            System.out.println("==========I'm over thread=========");
           }
          }

          class RunTest implements Runnable{
           public void run(){
            System.out.println("==========I'm over runnable==========");
           }
          }


          打印結果:
          第一類結果 (次序有時不同)
          =========header========1
          ===========footer======3
          ==========I'm over thread=========
          ==========I'm over runnable==========

          第二類結果
          =========header========1
          ==========I'm over runnable==========
          ===========footer======2
          ==========I'm over thread=========


          posted on 2009-04-24 15:04 王業平 閱讀(1173) 評論(6)  編輯  收藏

          評論:
          # re: 關于多線程的問題 高手指點 2009-04-24 15:47 | shivaree
          footer 和 header 是main線程 , over thread 和 over runnable是支線程, 三個啊。   回復  更多評論
            
          # re: 關于多線程的問題 高手指點 2009-04-24 16:07 | 5452
          類運行時,main函數是入口,所以運行時,首先是建立了一個屬于main的線程,然后才是new Thread(rt).start(); tt.start(); 的運行,也就是說此時最多有三個線程。樓主的四個線程是怎么想的我不知道。   回復  更多評論
            
          # re: 關于多線程的問題 高手指點 2009-04-24 16:14 | 王業平
          RunTest 不還是一個線程嗎?
          ==========I'm over runnable==========
          不就是它打印的結果嗎,我用藍色字體標明了的  回復  更多評論
            
          # re: 關于多線程的問題 高手指點[未登錄] 2009-04-24 16:41 | smile
          RunTest rt=new RunTest();
          new Thread(rt).start();

          上面啟動的是一個線程,實現了Runnable但是不放到線程里面執行是不會產生新的線程的。  回復  更多評論
            
          # re: 關于多線程的問題 高手指點 2009-04-24 16:49 | 王業平
          rt 不是已經放到線程里面了嗎
          說明白點吧  回復  更多評論
            
          # re: 關于多線程的問題 高手指點 2009-06-18 08:08 | zeaster
          //此處不會啟動新線程,因為RunTest只是個Runnable,不是Thread
          RunTest rt=new RunTest();

          // 此處會啟動一個線程,這個線程使用實現Runnable接口的rt
          new Thread(rt).start();

          所以上面2行,只啟動一個線程
          程序里一共3個
            回復  更多評論
            

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 余江县| 喀什市| 贡觉县| 大宁县| 温宿县| 新干县| 且末县| 恩平市| 黄大仙区| 黄浦区| 曲麻莱县| 莱芜市| 奎屯市| 喀喇沁旗| 常宁市| 衡阳市| 临桂县| 广南县| 理塘县| 梅州市| 抚州市| 柳河县| 正镶白旗| 固安县| 扎囊县| 年辖:市辖区| 盘山县| 津南区| 纳雍县| 桑植县| 南城县| 贵德县| 利辛县| 渭南市| 淳安县| 平南县| 崇信县| 铁力市| 淮阳县| 扶风县| 深水埗区|