創建線程的方法

創建線程有2種方法

1繼承Thread, 該子類應重寫 Thread類的 run 方法

2實現Runnable接口,將類聲明爲 Thread 的子類。有單繼承的侷限性不常用

Thread類概述

該子類應重寫 Thread 類的 run 方法。接下來可以分配並啓動該子類的實例

創建線程的步驟:

     1 定義一個類繼承Thread

     2 重寫run方法。

     3 創建子類對象,就是創建線程對象

     4 調用start方法,開啓線程並讓線程執行,同時還會告訴jvm去調用run方法。


 

Runnable接口避免了單繼承的侷限性,所以繼承Thread類的方式在這裏不再贅述j_0020.gif



Runnable接口概述

Runnable 接口應該由那些打算通過某一線程執行其實例的類來實現。類必須定義一個run 的無參數方法

創建線程的步驟

     1、定義類實現Runnable接口。

     2、覆蓋接口中的run方法。

     3、創建Thread類的對象,Runnable接口的子類對象作爲參數傳遞給Thread類的構造函數。

     4、調用Thread類的start方法開啓線程。

代碼演示:

class Demo implements Runnable

{

    privateString name;

    Demo(Stringname)

    {

        this.name= name;

    }

    //覆蓋了接口Runnable中的run方法。

    publicvoid run()

    {

        for(inti=1; i<=20; i++)

        {           System.out.println("name="+name+"..."+Thread.currentThread().getName()+"..."+i);

        }

    }

}

class ThreadDemo2

{

    publicstatic void main(String[] args)

    {

        //創建Runnable子類的對象。注意它並不是線程對象。

        Demo d= new Demo("Demo");

        //創建Thread類的對象,將Runnable接口的子類對象作爲參數傳遞給Thread類的構造函數。

        Threadt1 = new Thread(d);

        Threadt2 = new Thread(d);

        //將線程啓動。

        t1.start();

        t2.start();

        System.out.println(Thread.currentThread().getName()+"----->");

        System.out.println("HelloWorld!");

    }

}

 

實現Runnable的好處(相對於繼承Thread)

1. 避免了單繼承的侷限性

2. 線程分爲兩部分,一部分線程對象,一部分線程任務.更加符合面向對象的思想

 

線程對象調用 run方法和調用start方法區別?

         線程對象調用run方法不開啓線程。僅是對象調用方法。線程對象調用start開啓線程,並讓jvm調用run方法在開啓的線程中執行。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章