Java多線程2—線程的創建

在java語言出現之前,多線程是通過操做硬件等方法實現的,儘管這是一種有用的方法,但編出的程序很難移植,所以程序員往往爲此付出不小的代價。Java是第一個從語言級實現多線程的方法。由於java實現了多線程,使得利用java編寫多線程的程序也比較簡單,因此這也成了java語言相比於其他語言的一個優勢。另外java是運行在虛擬機上的,可移植性強,這個特點和簡單的多線程編寫配合,使的java的優勢更明顯。扯的有點遠了,回來,下面介紹線程的創建。

在創建我們自己寫的線程的時候,java就已經先創建了一個線程,就是我們運行主函數main的線程。有時候我們可能會需要得到當前正在運行的線程,這裏我們就可以用Thread類中的靜態方法currentThread(),這個函數返回的是一個Thread類的實例的引用,我們可以調用getName()方法獲得當前的線程的名字(具體的方法請讀者自己查看java的幫助文檔)。下面我們舉一個例子:

public classaaa

{

   public static void main(String[] args)

   {

      System.out.println(Thread.currentThread().getName());

   }

 

}//main

下面我們介紹java中怎麼創建多線程,java提供了兩種創建多線程的方法,如下:

    (1)從Thread類繼承;

(2)實現Runnable接口。

對於這兩種創建線程的方法,都必須實現一個run()方法,因爲在我們創建線程後,調用start()啓動線程之後,調用的是run()方法。

這裏多說一句,在java中有許多的類跟接口可以實現同樣的功能,有些人就感覺這個多此一舉。但是認真想想,java爲了安全的考慮只支持單繼承,但是我們的實際開發中,課程需要同時繼承兩個類,但是java又是不允許。這裏接口就發揮作用了,我們可以繼承一個類,同時實現一個或多個接口(對於接口實現的個數java中沒有限制)。

下面介紹第一個創建線程的方法,我們還是以例子的形式給出:

public classaaa

{

   public static void main(String[] args)

   {

      System.out.println(Thread.currentThread().getName());

      MyThread mt = new MyThread();//創建MyThread類的一個實例,並把它賦給mt

      mt.start();//啓動線程

   }

}

class MyThreadextendsThread

{

   public void run()

   {

      System.out.println(Thread.currentThread().getName());

   }

}

上面的例子顯示了創建線程的第一方法,多說一句,有時候我們需要在啓動線程的時候,去做一些別的工作,這些工作不是我們在創建對象的時候做的,我們可以重寫Thread類的start()方法,就像下面一樣

public void start(){

   自己想要做的工作

   Super.start();

}

下面我們介紹第二種創建線程的方法,還是以例子的形式給出:

public classaaa

{

   public static void main(String[] args)

   {

      System.out.println(Thread.currentThread().getName());

      MyThread mt = new MyThread();//創建MyThread類的一個實例,並把它賦給mt

      Thread t = new Thread(mt);//創建一個Thread類的對象,並且將我們實現了run()方法的MyThread類的對象的實例mt作爲參數傳入

      t.start();//啓動線程

   }

}

class MyThreadimplementsRunnable

{

   public void run()

   {System.out.println(Thread.currentThread().getName());}

}//main

Thread-0

在我實現runnable接口創建線程的時候,我們必須將我們自己寫的類的實例作爲參數傳給一個Thread類的對象,然後在調用該對象的start()方法。

這裏簡單的介紹了一下,希望對大家有幫助,如果有錯或者不妥當的地方希望指出。

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