隨筆-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 王業平 閱讀(1171) 評論(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個
            回復  更多評論
            

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


          網站導航:
           
          主站蜘蛛池模板: 黄石市| 调兵山市| 德保县| 桓台县| 宜城市| 陇川县| 垦利县| 大足县| 崇信县| 九江市| 鲁山县| 类乌齐县| 修武县| 呈贡县| 视频| 云梦县| 贵定县| 三台县| 桂阳县| 开封市| 昌乐县| 泰兴市| 涡阳县| 灵丘县| 武安市| 绵阳市| 金华市| 贵南县| 宜章县| 罗源县| 疏附县| 崇阳县| 无极县| 高唐县| 体育| 枣阳市| 三台县| 锦屏县| 旅游| 互助| 怀来县|