<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成人一区二区三区观看 | 亚洲精品国产成人专区| aa午夜免费剧场| 中文亚洲成a人片在线观看| 亚洲国产成人久久精品app| 精品久久8x国产免费观看| 久久久久亚洲AV成人网人人软件| 美女视频黄视大全视频免费的| 免费无码一区二区三区| 黄网址在线永久免费观看| 亚洲AV永久无码天堂影院| 秋霞人成在线观看免费视频 | 久久久精品免费国产四虎| 亚洲av成人无码久久精品| 日韩精品视频在线观看免费| 99久久精品免费视频| 亚洲六月丁香六月婷婷蜜芽| 最新欧洲大片免费在线| 国产成人亚洲精品蜜芽影院| 亚洲精品国产高清嫩草影院| 中文字幕乱码亚洲精品一区| 国产一级理论免费版| 黄 色一级 成 人网站免费| 亚洲福利在线视频| 在线精品免费视频| 亚洲一卡2卡3卡4卡国产网站| 在线观看免费污视频| 亚欧国产一级在线免费| 伊人久久综在合线亚洲2019| 成人免费男女视频网站慢动作| 成年免费大片黄在线观看com| 浮力影院第一页小视频国产在线观看免费| 国产精品亚洲专区一区| 亚洲精品蜜桃久久久久久| 成人免费av一区二区三区| 亚洲av无码片区一区二区三区| 亚洲成A人片在线观看中文| 噜噜噜亚洲色成人网站| 亚洲国产女人aaa毛片在线|