【好程序員訓練營】Java線程學習

一、定義線程

1、擴展java.lang.Thread類。

此類中有個run()方法,應該注意其用法:

public void run(){}

如果該線程是使用獨立的Runnable運行對象構造的,則調用該Runnable對象的run方法;否則,該方法不執行任何操作並返回。

Thread的子類應該重寫該方法。

public MyThread extends Thread(){

}

2、實現java.lang.Runnable接口。

void run()

使用實現接口Runnable的對象創建一個線程時,啓動該線程將導致在獨立執行的線程中調用對象的run方法。

 

二、實例化線程

1、如果是擴展java.lang.Thread類的線程,則直接new即可。

2、如果是實現了java.lang.Runnable接口的類,則用Thread的構造方法:

Thread(Runnable target)
Thread(Runnable target, String name)
Thread(ThreadGroup group, Runnable target)
Thread(ThreadGroup group, Runnable target, String name)
Thread(ThreadGroup group, Runnable target, String name, long stackSize)

 

三、啓動線程

 

在線程的Thread對象上調用start()方法,而不是run()或者別的方法。

 如果直接調用了run()方法,那麼所謂的線程也就是一個方法調用,不存在線程了

在調用start()方法之前:線程處於新狀態中,新狀態指有一個Thread對象,但還沒有一個真正的線程。

在調用start()方法之後:發生了一系列複雜的事情

啓動新的執行線程(具有新的調用棧);

該線程從新狀態轉移到可運行狀態;

當該線程獲得機會執行時,其目標run()方法將運行。

注意:對Java來說,run()方法沒有任何特別之處。像main()方法一樣,它只是新線程知道調用的方法名稱(和簽名)。因此,在Runnable上或者Thread上調用run方法是合法的。但並不啓動新的線程。

 

發佈了43 篇原創文章 · 獲贊 13 · 訪問量 14萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章