Java學習之多線程(1)

第一篇博客就這樣隨手記下來了。

在傳統的程序語言中呢,運行的順序總是必須按照程序的流程運行,且一次只能運行一個程序塊,但Java的多線程就打破了這種束縛。所謂的線程(Thread)就是指程序的運行流程,多線程機制是指可以同時運行多個程序塊,是程序運行效率更高。

在Java中實現多線程操作有兩種方法,一是繼承Thread類,二就是實現Runnable接口了。

1.繼承Thread類

格式:

class 類名 extends Thread{

屬性;

方法;

public void run(){

線程主體;

}

}

實際上如果要正確的啓動線程,是不能直接調用run()方法的,而應該調用從Thread類中繼承而來的start()方法,不然還是屬於順序式的執行方式,這是因爲線程的運行需要本機操作系統支持。如果一個類通過繼承Thread類來實現,那麼就只能調用一次start()方法,如果調用多次將會拋出“IllegalThreadStateException”異常。

如果一個類只能繼承Thread類才能實現多線程,那必定受到單繼承侷限的影響,所以一般實現多線程還可以通過實現Runnable接口完成。

2.實現Runnable接口

格式:

class 類名 implements Runnable{

屬性;

方法;

public void run(){

線程主體;

}

}

現在實現的是Runnable接口,但此接口並沒有start()方法的定義,那該如何啓動多線程呢?實際上,還是要依靠Thread類完成啓動,在此類中提供了public Thread(Runnable target)和public Thread(Runnable target,String name)兩個構造方法,都可以接收Runnable的子類實例對象,所以就可以以此啓動多線程了。

所以,無論使用哪種方式,最終都要依靠Thread類才能啓動多線程。

但是實現Runnable接口相對於繼承Thread類來說,有着顯著的優勢:

(1)適合多個程序代碼的線程去處理同一資源的情況。

(2)避免由於Java單繼承帶來的侷限。

(3)增強了程序的健壯性,代碼能夠被多個線程共享,代碼與數據是獨立的。

所以,在開發中建議使用Runnable接口實現多線程。

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