天天看點

多線程中run()和start()差別*

start()方法它的作用是啟動一個新線程,run()就和普通的成員方法一樣,可以被重複調用。

這個問題經常被問到,但還是能從此區分出面試者對Java線程模型的了解程度。start()方法被用來啟動新建立的線程,而且start()内部 調用了run()方法,這和直接調用run()方法的效果不一樣。當你調用run()方法的時候,隻會是在原來的線程中調用,沒有新的線程啟動,start()方法才會啟動新線程。

start方法:

通過該方法啟動線程的同時也建立了一個線程,真正實作了多線程。無需等待run()方法中的代碼執行完畢,就可以接着執行下面的代碼。此時start()的這個線程處于就緒狀态,當得到CPU的時間片後就會執行其中的run()方法。這個run()方法包含了要執行的這個線程的内容,run()方法運作結束,此線程也就終止了。

run方法:

繼續閱讀