定義線程有兩種方法,一種是繼承Thread類,一種是實現Runnable接口,這兩種方法存在各自的優缺點。和定義線程對應的就是創建線程對象,也有兩種方法。下面給大家介紹一下這兩種方法來定義線程及相對應的創建線程對象的方法。

1.繼承Thread類定義線程

      定義一個線程可以通過繼承Thread類來實現,這是一種相對簡單的定義線程的方法。在Thread類中有一個run方法,在定義的線程中需要重寫這個方法。在重寫run方法中可以定義該線程要執行的語句。當線程啟動時,run方法中的程序就成為一條獨立的執行線程。示例代碼如下:

public  class   XianCheng  extends  Thread

{

       public void run()

      {

            System.out.println("run方法執行");

         }

}     

改程序是無法執行的,因為沒有main方法,也就是沒有啟動線程的方法。下面先介紹如何創建線程對象。代碼如下:

XianCheng   xc = new  XianCheng();

從上面的代碼可以看出,創建線程對象的方法和創建普通對象的方法是一樣的。但是這只是對于使用繼承Thread類創建線程的方法來說的。我們也可以通過Thread類來定義線程對象,如

Thread  th = new Thread();

2.實現Runnable接口定義線程

      在Runnable接口中具有一個抽象的run方法,在實現Runnable接口時,需要實現run方法。示例代碼如下:

public  class  test2  implements  Runnable{

    public   void   run(){

        System.out.println("run方法執行");

        }

}

在使用實現Runnable接口定義的線程中,要比上面復雜些,因為直接創建類的對象創建的并不是一個線程對象,要想創建線程對象必須要借助Thread類。只有Thread類才能定義線程對象。

代碼如下:test2     t2 = new  test2();

             Thread  tt2 = new  Thread(t2);

tt2才是線程對象,Thread類具有4個構造器,最常用的就是具有一個參數的,我們可以先創建一個實現Runnable接口的類對象,然后作為Thread類的參數來創建多個線程對象。

當我們建立了一個線程類的時候,就要啟動線程,初學者會認為啟動線程就是調用線程類中的方法。但這點是錯誤的,雖然可以用對象名.run()來調用run方法,但這并不是線程的啟動。要想啟動線程還要調用線程的star方法,如:tt2.start();但要注意,一個線程只能調用一次star方法,第二次啟動線程會發生IllegalThreadException異常。有關線程的啟動,應用問題以后再做介紹。

好了,有關線程的基礎知識先介紹到這里。有不足的地方請大家批評指正。