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


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


    網站導航:
     
    主站蜘蛛池模板: 久久99毛片免费观看不卡| 久久久久久亚洲精品影院| 久久久WWW成人免费精品| 亚洲国产中文v高清在线观看| 亚洲最大av资源站无码av网址| 免费电影在线观看网站| 亚洲综合一区国产精品| 无人影院手机版在线观看免费| 亚洲香蕉久久一区二区三区四区| 国产精品成人观看视频免费| 亚洲永久中文字幕在线| h片在线免费观看| 一区二区亚洲精品精华液| 成人毛片免费视频| 亚洲精品永久在线观看| 四虎永久在线精品视频免费观看| 一边摸一边桶一边脱免费视频| 国产精品亚洲视频| 香港a毛片免费观看| 99精品全国免费观看视频..| 久久精品国产精品亚洲精品| 57pao一国产成永久免费| 久久久久亚洲国产| 久久伊人亚洲AV无码网站| 亚洲免费精彩视频在线观看| 亚洲精品伊人久久久久| 亚洲国产婷婷香蕉久久久久久| 免费视频精品一区二区三区| 久久精品国产亚洲αv忘忧草| 免费观看国产小粉嫩喷水| 国产永久免费高清在线| 国产亚洲国产bv网站在线| 亚洲国产一区视频| 99在线精品免费视频九九视| 无遮挡a级毛片免费看| 亚洲成年轻人电影网站www| 成人免费毛片观看| 女人隐私秘视频黄www免费| 亚洲中字慕日产2021| 亚洲性日韩精品国产一区二区| 亚洲免费观看在线视频|