1. 程式人生 > >多線程start()與run()區別

多線程start()與run()區別

通過 系統 調用 tar start 時間片 運行 實現 狀態

start()用來啟動一個線程,當調用start()方法時,系統才會開啟一個線程,通過Thread類中的start()方法來啟動的線程處於就緒狀態(可運行狀態),此時並沒有運行,一旦得到CPU時間片,就自動開始執行run()方法,此時不要等待run()執行完也可以繼續執行下面的代碼,由此看出run()並沒有實現多線程。

run()是在本線程裏的,只是線程裏的一個函數,而不是多線程,如果直接調用run(),其實就相當於調用了一個普通函數,必須等待run()執行完以後才能執行下面代碼,所以執行路徑還是只有一條,沒有線程的特征。所以在多線程執行時用start()而不用run()。

多線程start()與run()區別