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

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

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

    java something

    不要以為......很遙遠
    隨筆 - 23, 文章 - 1, 評論 - 2, 引用 - 0
    數據加載中……

    復習下java多線程

    好久沒搞這個了,今天把以前的筆記整理下,當復習。

    Thread類和Runnable接口

    多線程是一個程序中可以有多段代碼同時運行,那么這些代碼寫在哪里,如何創建線程對象呢?

        首先,我們來看Java語言實現多線程編程的類和接口。在java.lang包中定義了Runnable接口和Thread類。

     

    Runnable接口中只定義了一個方法:

    ·         public abstract void run()

    這個方法要由實現了Runnable接口的類實現。Runnable對象稱為可運行對象,一個線程的運行就是執行該對象的run()方法。


          Thread
    類實現了Runnable接口,因此Thread對象也是可運行對象。同時Thread類也是線程類,該類的常用構造方法如下:

    ·         public Thread()

    ·         public Thread(Runnable target)

    ·         public Thread(String name)

    ·         public Thread(Runnable target, String name)
    target為線程運行的目標對象,即線程調用start()方法啟動后運行那個對象的run()方法,該對象的類型為Runnable,若沒有指定目標對象,則以當前類對象為目標對象,name為線程名


     

      線程的創建 

    介紹下如何創建和運行線程的兩種方法。線程運行的代碼就是實現了Runnable接口的類的run()方法或者是Thread類的子類的run()方法,因此構造線程體就有兩種方法:
        ·         繼承Thread類并覆蓋它的run()方法;
        ·        
    實現Runnable接口并實現它的run()方法。

      1,繼承Thread類創建線程

    通過繼承Thread類,并覆蓋run()方法,這時就可以用該類的實例作為線程的目標對象。下面的程序定義了SimpleThread類,它繼承了Thread類并覆蓋了run()方法。

    程序SimpleThread.java

    public class SimpleThread extends Thread{

      public SimpleThread(String str){

        super(str);

    }

    public void run(){

        for(int i=0; i<100; i++){

          System.out.println(getName()+" = "+ i);

          try{

             sleep((int)(Math.random()*100));

          }catch(InterruptedException e){}

        }

    System.out.println(getName()+ " DONE");

    }

    }

    _____________________________________________________________________________

        SimpleThread類繼承了Thread類,并覆蓋了run()方法,該方法就是線程體。

    程序 ThreadTest.java

    public class ThreadTest{

      public static void main(String args[]){

        Thread t1 = new SimpleThread("Runner A");

        Thread t2 = new SimpleThread("Runner B");

        t1.start();

        t2.start();

     }

    }

    _____________________________________________________________________________

    ThreadTest類的main()方法中創建了兩個SimpleThread類的線程對象并調用線程類的start()方法啟動線程。構造線程時沒有指定目標對象,所以線程啟動后執行本類的run()方法。

    注意,實際上ThreadTest程序中有三個線程同時運行,在應用程序的main()方法啟動時,JVM就創建一個主線程,在主線程中可以創建其他線程。

      2,實現Runnable接口創建線程

    可以定義一個類實現Runnable接口,然后將該類對象作為線程的目標對象。實現Runnable接口就是實現run()方法。

    下面程序通過實現Runnable接口構造線程體。

    程序 ThreadTest.java

    class T1 implements Runnable{

      public void run(){

        for(int i=0;i<15;i++)

          System.out.println("Runner A="+i);

      }

    }

    class T2 implements Runnable{

      public void run(){

        for(int j=0;j<15;j++)

          System.out.println("Runner B="+j);

      }

    }

    public class ThreadTest{

      public static void main(String args[]){

        Thread t1=new Thread(new T1(),"Thread A");

        Thread t2=new Thread(new T2(),"Thread B");

        t1.start();

        t2.start();

      }

    }

    _____________________________________________________________________________




        

     



    posted on 2011-09-01 20:46 Jamie 閱讀(383) 評論(0)  編輯  收藏 所屬分類: 多線程

    主站蜘蛛池模板: 精品韩国亚洲av无码不卡区 | 57PAO成人国产永久免费视频| 亚洲乱亚洲乱少妇无码| 亚洲AV无码成人精品区狼人影院| 成年在线观看免费人视频草莓| 亚洲五月综合网色九月色| 青青青国产在线观看免费网站| 亚洲白色白色在线播放| 1024免费福利永久观看网站| 亚洲激情校园春色| 皇色在线视频免费网站| 亚洲永久网址在线观看| 国产美女无遮挡免费视频网站 | 97国免费在线视频| 亚洲AV无码专区亚洲AV伊甸园| 成全视频在线观看免费| 亚洲视频免费在线播放| 成人免费无码大片A毛片抽搐| 亚洲美国产亚洲AV| 亚洲国产av无码精品| 久久久久久国产a免费观看不卡| 亚洲AV无码欧洲AV无码网站| 在线永久看片免费的视频| 国产精品观看在线亚洲人成网| 亚洲欧洲日产国码一级毛片| 久久香蕉国产线看免费| 亚洲男人的天堂网站| 国产亚洲精久久久久久无码77777 国产亚洲精品成人AA片新蒲金 | 美女免费视频一区二区| 红杏亚洲影院一区二区三区| 一区二区三区观看免费中文视频在线播放| 亚洲午夜精品一区二区| 国国内清清草原免费视频99| 一区二区三区视频免费| 久久亚洲日韩精品一区二区三区| 国产在线国偷精品产拍免费| yellow免费网站| 亚洲av成人一区二区三区| 亚洲人成影院在线观看| 又粗又大又黑又长的免费视频| 猫咪免费人成网站在线观看入口|