<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)  編輯  收藏 所屬分類: 多線程

    主站蜘蛛池模板: 亚洲成片观看四虎永久| 九九精品免费视频| 亚洲成人影院在线观看| 激情小说亚洲图片| 女人与禽交视频免费看| 亚洲最大福利视频| 成人免费a级毛片无码网站入口| 亚洲女人18毛片水真多| 成人黄色免费网址| 亚洲一区二区三区久久| 青青草免费在线视频| 亚洲综合色一区二区三区| 日韩高清免费在线观看| 鲁啊鲁在线视频免费播放| 区三区激情福利综合中文字幕在线一区亚洲视频1 | 久久免费动漫品精老司机| 亚洲AV成人精品网站在线播放| 国产亚洲免费的视频看| 婷婷久久久亚洲欧洲日产国码AV| 久久国产免费一区| 亚洲中文字幕人成乱码 | 日韩午夜理论免费TV影院| 亚洲激情视频网站| 成人毛片18女人毛片免费视频未 | 99re这里有免费视频精品 | 香蕉视频免费在线播放| 日韩亚洲变态另类中文| 8x网站免费入口在线观看| 亚洲精品国产国语| 亚洲精品视频在线看| 久久免费区一区二区三波多野| 91亚洲精品麻豆| 国产免费观看黄AV片| 国产精品免费久久| 久久亚洲AV无码精品色午夜麻豆| 黄色片在线免费观看 | 美女羞羞喷液视频免费| 久久青青成人亚洲精品| 成年女人男人免费视频播放| 一个人看的免费高清视频日本| 91大神亚洲影视在线|