如何啓動一個線程

標題1:如何啓動一個線程

啓動一個線程必須調用方法來啓動,也就是調用Thread類的start()方法、而不是調用run()方法的原因是:run()中包含的是線程的主體,也就是這個線程被啓動後將要運行的代碼,它和線程的啓動沒有任何關係。

標題2:Thread類中的start()方法和run()方法的區別

start()方法用來啓動一個線程,當調用start()方法時,系統纔會開啓一個線程,通過Thread類的start()方法來啓動的線程處於就緒狀態(可運行狀態),此時並沒有真正的運行,只有一旦得到CPU時間片,纔會自動開始執行run()方法。

run()方法只是線程裏的一個函數(也稱爲線程體),而不是多線程的。如果直接調用run()方法,其實就相當於是調用了一個普通函數而已。直接調用run()方法必須等待run()方法執行完後才能執行下面的代碼,所以執行路徑還是隻有一條,這樣就沒有達到寫線程的目的。所以在多線程執行時要使用start()方法去啓動線程而不是run()方法。

把需要處理的代碼放到run()方法中,start()方法啓動線程將自動調用run()方法,這個由java的內存機制規定的。並且run()方法必須是public的訪問權限,返回值爲void。

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