隨筆-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 王業(yè)平 閱讀(1170) 評論(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 | 王業(yè)平
          RunTest 不還是一個線程嗎?
          ==========I'm over runnable==========
          不就是它打印的結果嗎,我用藍色字體標明了的  回復  更多評論
            
          # re: 關于多線程的問題 高手指點[未登錄] 2009-04-24 16:41 | smile
          RunTest rt=new RunTest();
          new Thread(rt).start();

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

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

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

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


          網站導航:
           
          主站蜘蛛池模板: 洞口县| 凤冈县| 仪陇县| 宿松县| 安泽县| 读书| 祁东县| 横山县| 肇东市| 绥宁县| 岚皋县| 略阳县| 迭部县| 喀什市| 开鲁县| 连山| 黔西| 呈贡县| 巫溪县| 乐山市| 丰都县| 石城县| 云和县| 岐山县| 西乡县| 义马市| 榆树市| 青海省| 邹平县| 桓仁| 渝中区| 依安县| 宁陕县| 庄河市| 高州市| 凤山市| 黄山市| 桐乡市| 铁岭市| 清流县| 新宁县|